프로세스
-
[OS] 4-2. Process ManagementComputer Science/운영체제 2020. 9. 24. 02:30
#프로세스의 생성, 실행 및 종료에 관한 시스템 콜 1. fork() 시스템콜 위 그림의 두 코드는 부모 프로세스(좌), 자녀 프로세스(우)이다. 처음 부모 프로세스가 코드를 수행하다가 fork 시스템 콜을 만나면, 부모 프로세스를 똑같이 복사해 자녀 프로세스를 만들고 이후 명령을 계속 실행한다. 자녀 프로세스는 부모 프로세스의 Program Counter를 그대로 복제했기 때문에, 부모 프로세스와 마찬가지로 fork의 바로 밑 코드부터 실행한다. 또한, 부모 프로세스는 fork의 return 값으로 양수, 자녀 프로세스는 0을 pid에 취해 서로를 구분한다. 2. exec() 시스템콜 fork로 복사한 프로세스를 다른 프로그램으로 다시 덮어쓰기 위해 exec 시스템콜을 사용한다. 위와 같은 경우는 ex..
-
[OS] 4-1. Process ManagementComputer Science/운영체제 2020. 9. 23. 15:36
# 프로세스의 생성 부모 프로세스가 자식 프로세스를 Copy-on-write(COW) 기법으로 생성한다. COW는 무언가의 변경(write)이 있을 때, 부모의 주소 공간 중 변화가 있는 부분을 copy해 자식의 주소 공간을 만드는 기법이다. 또한, 자식이 자식을 생성하고 그 수가 많아지면 프로세스는 트리를 형성한다. - 자식은 부모 프로세스의 ① 주소 공간(binary & OS data)을 복사해 ② 그 공간에 새로운 프로그램을 올린다. ex) 유닉스에서는 fork() 시스템 콜이 주소 공간을 복사하고 exec() 시스템 콜이 새로운 프로그램을 메모리에 올린다. - 생성된 프로세스는 자원을 운영체제로부터 받거나 부모 프로세스와 공유한다. (부모와 공유하지 않는 것이 일반적) - 수행 : 부모와 자식이 ..
-
[OS] 3-2. ProcessComputer Science/운영체제 2020. 9. 21. 04:53
# Thread (= lightweight process) (↔ heavyweight process, 전통적인 개념의 프로세스) 하나의 프로세스 내부에 CPU 수행 단위를 여러 개 두는 것을 말한다. 각각의 스레드는 CPU 수행과 관련된 정보만 제외하고 프로세스의 모든 것을 공유한다. 동일한 일을 수행하는 프로세스를 여러 개 띄워 놓고 싶다면, 하나의 주소 공간에 여러 개의 스레드를 사용하는 것이 효율적이다. 따라서, Program Counter를 여러 개 두고 register의 값들을 별도로 기억해두어 각각의 스레드가 스스로에게 필요한 code를 실행하게끔 한다. 함수 호출 및 return과 관련해서 stack도 스레드마다 따로 둔다. 1. Thread의 구성 · program counter · reg..
-
[OS] 3-1. ProcessComputer Science/운영체제 2020. 9. 16. 23:41
# 프로세스(Process)의 개념 1. 프로세스 : 실행중인 프로그램을 의미한다. 2. 프로세스의 문맥(Context) : 프로세스의 현재 진행 상태를 알려주는 것 ∵ time sharing, multitasking 등의 실현은 각 프로세스의 문맥을 정확히 기록해두어야 가능하다! - 하드웨어 문맥 : CPU의 수행 상태를 나타냄 ex) Program Counter, 각종 register → CPU 관점에서 파악! - 프로세스의 주소 공간 : 어떤 자료구조가 어떤 값을 가지고 있는지, 어떤 함수가 호출되고 return되는지 등을 파악함 ex) code, data, stack → 메모리 관점에서 파악! - 프로세스 관련 커널 자료 구조 ex) PCB(Process Control Block), Kernel ..