1. 프로세스 생성 부모 프로세스가 자식 프로세스를 만듬. 사람처럼 아버지, 어머니 한 쌍의 부모가 아니라 부모 프로세스는 하나가 자식을 복제해서 만듬. 프로세스의 족보는 트리 형태 ⇒ 자식을 여러개 나을수(복제) 있음 프로세스가 실행이 되려면 자원이 있어야함(CPU, 메모리 등). 이 자원은 OS로부터 받음. 이 자원을 부모와 공유하는 경우가 있고 공유하지 않는 경우가 있음. 원칙적으로는 공유 X (공유하지 않는 것이 일반적) ⇒ 부모 프로세스가 자녀 프로세스를 복제하면 그때부터는 별도의 프로세스이기 때문에 서로 CPU, 메모리를 더 많이 얻으려고 경쟁하는 사이가 됨. 그럼 공유는 어떤 경우에? ⇒ 자식 프로세스는 부모 프로세스를 메모리에 그대로(코드, 데이터, 스택의 주소공간) 카피. 그러면 메모리에..
2장 부연설명 "설명 드리기에 앞서 2장 동기식 입출력과 비동기식 입출력의 차이점에 대한 질문이 많이 들어와서 먼저 이것에 대한 간단한 부연 설명을 드리고 나서 3장을 계속 진행하겠습니다." -교수님- 사용자 프로세스가 OS에게 IO요청을 한 경우, IO가 수행되는 동안 이 프로세스가 입출력이 끝날때가지 아무일 안하고 기다린다면 동기식 입출력. 사용자 프로세스가 입출력 요청을 했을 때, 입출력이 진행되는 동안 그 프로세스가 무언가를 instruction을 하면 비동기식 입출력 동기식이냐 비동기식이냐를 구분할 때 프로세스가 CPU를 가지고 있느냐 없느냐는 중요하지 않음. IO작업 동안 다른 무언가를 실행하지 않고, 결과를 받을때 까지 기다린다면 동기식. IO작업 요청을 한 다음 자신의 일을 계속 수행하는 ..
1. 프로세스의 개념 2. 프로세스의 상태 (Process State) 3. 프로세스 상태도 4. Process Control Block (PCB) 5. 문맥 교환 (Context Switch) ⭐ 6. 큐 (Queue) 7. 스케줄러(Scheduler) 1. 프로세스의 개념 프로세스는 실행중인 프로그램 프로세스의 문맥이란 프로세스가 태어나서 실행이 되다가 종료가 될텐데, 이 프로그램 중간 어느 시점을 잘라놓고 봤을 때 이 프로그램이 무엇을 어떻게 실행 했는 지, 현재 시점에 어떤 상태에 있는 지, 어디까지 작업을 수행했는지를 정확하게 나타내기 위해서 사용되는 개념 프로세스가 CPU를 점유하게 되면 CPU안의 Program Counter라는 레지스터가 이 프로세스의 code 어느 부분을 가리키게 되고, ..
1. 동기식 입출력과 비동기식 입출력 ⇒ IO에서의 synchronous라고 하는 것은 IO까지 가서 결과를 보고 오는 것을 보통 동기식 입출력이라고 함. ⇒ 동기식 입출력은 I/O 요청 후 I/O장치로부터 작업이 끝난 다음에야 사용자 프로그램이 다음 일을 함. 비동기식 입출력은 I/O장치에 무언가를 요청한 다음 (결과를 기다리지 않고) 바로 다시 CPU제어권을 얻어서 일을 수행. ⇒ IO장치에 여럿이 동시에 접근할 수 있는데 예를들어, A는 이 IO장치에 갖다 쓰고(synchronous write), B는 읽어오고(synchronous read). 이 때, A, B 모두 읽고 쓰는 것 확인까지 한 상태 ⇒ IO 장치에 가지 않고(확인하지 않고) 다음 일을 수행하는 것은 asynchronous(비동기식 ..
1. 컴퓨터 시스템 구조 ⇒ Memory는 CPU의 작업 공간. CPU는 매 순간(매 클럭) 메모리에서 기계어를 하나씩 읽어서 실행. ⇒ I/O device로 부터 Computer로 데이터를 가져가는 것을 input, 처리된 결과가 I/O Device로 나타나는 것을 output이라고 함. ⇒ Disk는 input 장치이기도 하고 output 장치이기도 함. 파일을 메모리에 input, 파일을 disk에 output. ⇒ 각각의 IO device들은 각 device를 전담하기 위한 작은 cpu같은 것들이 있음. 이것을 device controller라고 부름. ⇒ disk에서 head가 어떻게 움직이고 어떤 데이터를 읽을지와 같이 disk 내부를 통제하는 것은 cpu가 아닌 disk에 붙어있는 disk ..
1. 운영체제란? 소프트웨어가 컴퓨터 시스템에서 실행되기 위해서는 메모리에 그 프로그램이 올라가 있어야 함 ⇒ 운영체제 자체도 하나의 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라감 ⇒ 하지만 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심할 것. ⇒ 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 됨. ⇒ 메모리에 상주하는 운영체제의 부분을 커널(kernel)이라고 부르며 이를 좁은 의미의 운영체제라고도 부름. ⇒ 즉, 커널은 OS 코드 중에서도 핵심적인 부분 ⇒ 넓은 의미의 OS는 커널뿐 아니라 시스템을 위한 유틸리티들을 광범위하게 포함하는 개념 ex) 윈도우에서 파일을 복사..