프로세스 1 에 이어서 작성
쓰레드에 대해서는 다음에 더 자세히 ㄱ
두 개의 프로세스 사이의 Switching은 전에서 다루었음. 그렇다면 다수의 프로세스 사이의 실행은?
-> Process Scheduling
프로세스 스케쥴러가 실행 가능한 여러 프로세스들 중에서 다음에 무엇을 실행할지 선택함
다양한 기준과 알고리즘을 따라서 이루어진다.
프로세스는 다음 큐들 사이에서 왔다갔다함.
Ready Queue에서 PCB가 하나씩 나와서 CPU로 들어가고,
CPU에서는 프로세스를 종료시키던지 (exit, Terminated),
I/O가 필요해서 I/O queue (Device Queue)로 PCB를 넣던지, (I/O 끝나면 다시 Ready Queue로 들어가겠죠?),
CPU에서 할당한 시간이 끝나서 Preempted돼서 다시 Ready Queue로 들어가던지 한다.
context switch 는 빨라야 한다!!
왜? context switch time에는 아무런 쓸모 있는 작업을 할수 없다. 낭비되는 시간임(overhead)
부모 프로세스는 자식 프로세스를 생성할 수 있고, 이렇게 생성된 자식 프로세스들이 또 다른 자식 프로세스를 생성하여 프로세스 트리 구조를 형성한다.
UNIX 예시
- fork() 시스템 콜은 새로운 프로세스를 생성함
- fork() 시스템 콜 이후에 사용되는 exec() 시스템 콜은 프로세스의 메모리 공간을 새로운 프로그램으로 대체함
다음에는 ipc와 thread에 대해서 더 자세히 ㄱ
아니 근데 벨로그 왜 자꾸 자동 비공개됨 아 이거 개화나네 이거 해결하느라 개힘들었네