본문 바로가기
728x90

👨‍💻Computer Science73

[운영체제] 6장 Synchronization 여기서부터 무척 중요함(이해하기 어려움) 다중프로세스를 사용해야 Synchronization을 이해할 수 있음 Synchronization – 멀티스레드, 멀티프로그래밍 환경에서 일어나는 문제들을 해결하는 방법(두개 이상의 프로세스들이 쉐어드 메모리에 접근을 하려는 경우에 레이스 컨디션이 발생함 이러한 상황을 해결 해줘야함) Synchronization 두개 이상의 멀티 스레드가 사용되는 멀티프로그래밍 환경에서 shared data를 사용하는 경우 동기화가 필요함 -> 스레드들의 실행순서를 조절하기 위한 것임. Shared data structure에서 동기화는 필수적임 IPC - 프로세스들 간의 통신을 말하는 것 두 개의 프로세스는 직접적으로 데이터를 주고받을 수 없는데 이러한 상황에서 데이터를 주고받.. 2021. 6. 29.
[운영체제] 5장 Process Scheduling (어떠한 프로세스 먼저 수행시킬지 정하는 것, 기준필요) -> 본격적 운영체제를 배움 기준 – 언제까지 해야 하나, 빨리 끝나는 것 먼저 수행, 포기한 과목은 뒤로 미룸...등등 프로그램, 프로세스 수행과정을 보여줌 I/O관련 이벤트 들어올 때 wait(현 프로세스)을 하는 이유 CPU에서 명령어 수행 I/O수행이 반복되면서 프로세스 수행 CPU burst – CPU가 명령어를 수행하는 구간(running 상태) I/O burst – wait 상태에서 I/O가 끝날 때까지 기다리는 것(wait 상태) 프로그램이 수행될 때 위에 두 개를 번갈아감 CPU burst vs. I/O burst CPU-bound Process - 프로세스에서 CPU burst가 길다. I/O-bound process - 프로세스.. 2021. 6. 29.
[운영체제] 4장 Multithreaded Programming Process Multithreaded Programming 대표적인 예) 메신저프로그램 코딩 어떠한 글자를 키보드를 통해서 입력하는 클라이언트 프로그램을 만들 때 클라이언트 프로그램에서 문자를 입력하면 그 것을 수신하고 다른 사용자들에게 뿌려주는 서버를 프로그램 해야 함 다른 프로그램 클라이언트에게 통신을 날릴 때 키보드에서 입력하는 경우와 데이터를 받고 동시에 뿌려주는 것 두 가지를 해야 함 키보드 입력받는 함수 -> cin, scanf 사용 더불어 클라이언트만 이야기할 때 네트워크를 통해서 글자가 상대방이 입력한 것을 가져와서 뿌려주는 함수 또한 구현을 해야 함 이렇게 되면 키보드 입력을 통해 기다리는 함수와 네트워크를 통해서 데이터가 도착을 했을 때 뿌려주는 함수 2가지가 동시에 기다리게 됨. c.. 2021. 6. 29.
[운영체제] 3장 Process Concept 프로세스 – 일상 : 일을 처리하는 과정/경로, 공장 조립과정, 요리 과정 등등 운영체제 : 컴퓨터에서 프로그램을 실행시키기 위해 연속적인 작업(효율적 관리가 중요), 스케줄링의 대상이 되는 작업 Process Concept 프로그램 – 하드웨어에 있는 파일 프로세스 – 프로그램 구동 시 만들어지는 인스턴스, 운영체제에서 관리하는 프로그램의 흐름으로 가장 기초가 되는 단위 프로세스의 첫 번째 이 프로세스가 어떤 것을 하는지? 프로세스 명명(ID를 사용 = PID) Process Address Space Process Address space – 프로세스가 실행이 되기 위해 메모리공간에 저장이 되어야하는데 이때 저장이 되는 공간 stack(dynamic allocated memory) – 함수 호출시 지역.. 2021. 6. 29.
[운영체제] 2장 system 운영체제에서 지원해주는 서비스 요소 Process Management Main Memory Management – 버추얼 메모리 매니지먼트가 대표적 I/O System Management – 마우스, 키보드 등 관리(I/O기기 가상화) Secondary Storage Management – 하드디스크, SSD에서 데이터를 어떻게 관리하나 File Management – 파일생성, 폴더생성 관리 Networking – 인터넷 등등 Protection System – 시스템을 보호하기 위해 듀얼모드 사용(사용자 모드에서 커널모드로 직접적인 접근을 불가능하게 함 -> 시스템 콜 필요 Command-Interpreter System – 사용자가 내린 명령어를 해석해주는 시스템(커멘드 창 명령어 해석) 운영체제 .. 2021. 6. 29.
[운영체제] 1장 Introduction 1장 요약 컴퓨터 시스템 요소 하드웨어 – CPU, memory, I/O devices 등 소프트웨어 - 한글, 윈도우, 오피스, 등등 프로그램 운영체제 – Operating System 4. 응용프로그램 – application programs(compilers, web browsers, development kits 등) => 운영체제 위에서 돌아감 5. 사용자 – user 운영체제 역할 – SSD, HD 저장된 게임을 메모리 위에 올려놓고 CPU와 같은 HW자원을 이용하여 게임과 같은 프로그램이 잘 돌아가게 해줌. 컴퓨터시스템, 운영체제 역사 학습함 운영체제의 정의 – 소프트웨어와 하드웨어(CPU, IO장치, 메모리 등) 간의 컴퓨터 자원을 효율적으로 관리를 해서 사용자에게 편안하고 편리한 작업환경.. 2021. 6. 29.
[소프트웨어공학] 25장 Configuration Management -> 소프트웨어의 버전을 관리하는 부분, change 요청을 관리하는 부분에서 언급됨. 주요의제 Version management(버전관리) System building(시스템 통합) Change management(개선점 변경관리) Release management(배포관리) Configuration Management ->소프트웨어 제품에 들어가는 다양한 소스코드, 자원에 대해서 유지관리 함 ->소스코드를 관리하며 변경이 된 내용을 관리하고 변경된 이력 역시 관리함 ->수정이 발생한다면 어떠한 파일이 언제 어떠한 이유로 바뀌었는지를 기록하고 관리함 ->각각의 릴리즈에 들어가는 소프트웨어는 무엇인지 컨트롤할 수 있어야함 CM activities >Version management – 버전을 관리해 주는.. 2021. 6. 29.
[소프트웨어공학] 24장 Quality Management -> 앞에서 다룬 개발을 통해 소프트웨어가 도달해야할 양적 질적 수준에 도착하였는가 판단하는 것 -> QA팀(개발이 잘 되었는지 판다하는 그룹) 주요주제 Software quality -> 소프트웨어 퀄리티 정의 Software standards -> 소프트웨어 품질 관리 표준 적립 Reviews and inspections -> 품질관리에서 코드를 리뷰하는 정적관리, 실행 시에 코드가 잘 동작하는지 보는 다이나믹 분석이 있음 Quality management and agile development -> 에이자일의 경우 품질관리가 어떻게 이루어지는지 확인 Software measurement -> 정량적으로 소프트웨어의 품질이 어떤지 측정하는 방법론 Software quality management ->.. 2021. 6. 29.
[소프트웨어공학] 23장 Project planning -> 누군가 만든 소프트웨어를 고객에게 돈을 받고 제공한다. -> 고객의 요구를 받아서 개발 후 그 소프트웨어를 고객에게 제공함. -> 원칙적으로 plan-based를 가정함 -> 에이자일과의 상관관계도 설명을 함 -> 소프트웨어를 납품하는 과정을 배움 -> 소프트웨어공학의 주된 내용 -> 경험과 노하우에 대해서 배우는 것 -> 23,24,25장은 소프트웨어를 돈을 받고 판매하려고 할 때 중요한 부분을 차지함 -> man-month가 나온 것처럼 기존의 제조업에서 발전한 소프트웨어 개발이 상당수 실패를 겪으면서 돈을 받고 제품을 만드는 것(시간, 성능을 주로 추구함)을 해온 사람들과의 거래에서 고려해 봐야하는 부분이기 때문에 충분히 고려해봐야 할 부분이다. -> 얼마를 받고 받을 건지, 고객에게 돈을 받.. 2021. 6. 29.
728x90