KOCW 이화여대 반효경 교수님의 2014년 운영체제 강의를 듣고 정리한 내용입니다. 프로세스 관리 2 Copy-on-write (cow) write가 발생했을 때 그 때 copy하겠다. write: 원래있던 내용을 바꾸는 것 copy: 부모의 code, data, stack 복사 write가 발생하기 전까지는 부모 자원 공유 fork() 시스템콜 int main() { int pid; pid = fork(); if (pid == 0) /* this is child */ printf("\n Hello, I am child!\n"); else if (pid > 0) /* this is parent */ printf("\n Hello, I am parent!\n"); } fork() : 자식 만들어짐! 자식..
KOCW 이화여대 반효경 교수님의 2014년 운영체제 강의를 듣고 정리한 내용입니다. 프로세스 관리 1 프로세스 생성 부모 프로세스가 자식 프로세스 생성 (자신을 복제해서 만듬) 프로세스의 트리 (계층구조) 형성 프로세스가 실행되려면 자원(CPU, 메모리)을 필요로 함 운영체제로부터 받음, 부모 프로세스와 공유하거나 공유하지 않음 cf. 자원의 공유 부모와 자식이 모든 자원 공유 일부를 공유 전혀 공유하지 않음 (일반적임. 결국 부모/자식 프로세스도 자원을 얻기 위해 경쟁하기 때문) 수행 부모, 자식 공존하며 수행되는 모델 자식이 종료(terminate)될 때까지 부모가 기다리는(wait -> blocked 상태) 모델 주소 공간 자식은 부모의 공간을 복사함 (ex. 운영체제에 있는 data들 (PCB,..
KOCW 이화여대 반효경 교수님의 2014년 운영체제 강의를 듣고 정리한 내용입니다. 프로세스 3 Thread 프로세스 내부의 CPU 수행 단위 같은 일을 하는 process를 여러개 띄워놓고 싶다 → process 여러개 실행시 메모리 낭비 (독자적인 주소공간 = Code + Data + Stack) (즉, 프로세스 하나에 CPU 수행 단위만 여러개 두고 있게함 → Thread의 개념) ❗️메모리 공간 하나만 띄우고 (프로세스 하나만 띄우고), 각 Program Counter가 code의 다른 부분 실행하게 함 각 CPU 수행단위마다 `현재 register에 어떤 값을 넣고`, `P.C가 Code 어느 부분을 가르키며 실행하고 있는가` 를 별도로 유지함 Thread 하나가 Code 어느 부분을 실행하..
KOCW 이화여대 반효경 교수님의 2014년 운영체제 강의를 듣고 정리한 내용입니다. 프로세스2 동기식 / 비동기식 입출력 동기식 ex. 사용자 프로세스가 운영체제한테 입출력 요청하고 입출력 끝날 때까지 아무일 안하고 기다림 구현 방법 I/O가 끝날 때까지 CPU를 가지고 있으면서 기다림 (I/O가 끝날 때까지 CPU 낭비시킴, 매시점 하나의 I/O만 일어날 수 있음) I/O가 완료될 때까지 다른 프로그램에게 CPU를 줌 (당장 CPU를 주면 일을 할 수 있는 프로세스에게 CPU를 넘겨줌) 비동기식 ex. 입출력이 진행되는 동안 (입출력이 완료되기 전에) 그 프로세스가 CPU를 잡아서 instruction을 수행함 I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘..
KOCW 이화여대 반효경 교수님의 2014년 운영체제 강의를 듣고 정리한 내용입니다. 프로세스 개념 실행 중인 프로그램 프로세스의 문맥 CPU 수행 상태를 나타내는 하드웨어 문맥 (CPU 관련) Program Counter : 코드의 어느 부분까지 실행했는가 각종 register : register가 어떤 값을 가지고 있는지 프로세스의 주소공간 (메모리 관련) Code / Data / Stack : 각각에 어느 내용이 들어있는가 프로세스 관련 커널 자료 구조 (운영체제 관련) PCB (Process Control Block) 커널 주소공간의 Data영역에 존재 Kernel stack (프로세스 별로 커널스택 별도로 둠. 어느 프로세스의 부탁을 받고 실행하는지 매번 다르기 때문) 커널 주소공간의 Stack..
- Total
- Today
- Yesterday