개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
경성대학교 양희재 교수님 수업 영상을 듣고 정리하였습니다.
프로세스(process, task, job..): program in execution, 실행중에 있는 프로그램을 프로세스라고 한다.
즉, 하드디스크 안에는 프로그램, 메모리 안에는 프로세스라고 부른다.
cpu는 메인메모리 안의 process들을 관리하고 이를 관리한다는것은 cpu가 할당되어지는 시간을 관리하는 것을 의미한다.
IO를 만나지 않더라도 일정 시간이 지나면 강제로 스위칭!
프로세스 제어 블록으로 TCB(Task Control Block)이라고도 부른다.
프로세스의 상태(process state)- running, ready, waiting...
번지정보(PC, program counter)
register: 다른 레지스터들의 정보
MMU info(base, limit)
CPU Time
PID(Process ID, 프로세스마다의 번호)
list of open files(어떤 파일들을 사용하고있는지)
....
프로세스는 사람과 비슷한데, 이 PCB는 OS안의 process management 안에 들어있다. 모든 정보를 가지고 있어야 관리가 가능하고 관리를 하려면 모든 정보가 필요하다. 프로세스에 대한 정보는 모두 os안의 프로세스 관리 안에서 다 가지고 있다.
하드디스크에는 수많은 프로그램들이 있지만 이 모든 프로그램들을 메인메모리가 다 받아줄 수는 없다. 그렇기 때문에 하드디스크에서 메인메모리로 가는 과정에 대기하는 줄이 있고 그것을 Job Queue라고 한다. 그리고 메인메모리에 올라왔다고 해서 바로 서비스를 받지도 못한다. CPU는 하나뿐이기 때문에 결국 한번에 작업은 하나밖에 받지를 못한다.
즉, CPU의 작업을 받기위해서도 줄을 서서 기다려야 한다. 작업을 하고 있는 와중에 IO를 하기 위해서라도 줄을 서서 기다려야 한다.
= Job scheduler(long-term scheduler): 메모리에 어느 프로세스를 올릴지를 결정하는 코드로 이미 메인메모리가 꽉 차여있다면 결정할 필요가 없다.
어느 한 프로세스가 끝나 메모리가 비어지면 결정을 내리는 것으로 스케줄링은 자주 일어나지 않다.
= CPU scheduler(short-term scheduler): 프로세스간의 스위칭이 빠르게 돌아가야 한다. 1초에도 수십번씩 일어남. 컴퓨터에서는 CPU가 제일 중요!
= Device scheduler
현대의 운영체제는 대부분 다 멀티 프로그래밍이다. (하나의 메모리에 여러개의 프로세스를 올리는 것)
: 프로세스를 크게 두개 종류로 나눔
-> I/O-bound process: IO관련 작업만 하는 프로세스, 워드같은 프로그램
-> CPU-bound process: CPU 사용하는 프로세스 (계산 많이 하는 프로세스), 슈퍼컴퓨터 사용하는 애플리케이션. 일기예보 등
골고루 사용되기 위해 job scheduler가 적절히 올려주는 것이 중요! 즉, os는 적당히 io와 cpu가 일하도록 해줘야한다!
: 대화형시스템(TSS)에서...
-> 서버컴퓨터를 두고 여러 사용자가 컴퓨터를 사용하고 있다고 하자. 서버컴퓨터 내의 메모리에는 각각 사용자에 대한 프로세스들이 준비되어있을 것이다. 그런데 한 사용자가 잠시 작업을 중단했다고 하자. 그렇다는 것은 그 사용자를 위한 메모리는 현재 준비되어있지만 아무것도 하고 있지 않음을 의미한다. 실제 CPU 또한 그 사용자의 일을 하지 않을 것이다. CPU 입장에서는 해당 사용자의 메모리 사용이 아까울 것이다. os의 프로세스 관리부서(cpu사용시간을 관리하는 부서)에서 메모리를 사용하지 않음을 발견하고 이를 하드디스크에 메모리 전체를 쫓아낸다.(swap out)
비어진 메모리 공간에는 다른 프로세스를 올릴수도 있고 나머지 프로세스의 메모리 크기를 더 크게 해줄 수 있게 된다.
swapping
: 메인메모리에서 하드디스크로 쫓아내는 행위(swap out) 프로세스 이미지를 쫓아내는 행위로서 디스크를 사용하는 것(backing store-swap device), 사용자가 다시 돌아와서 해당 프로세스를 사용하고자 하여 디스크에 들어갔던 프로세스를 다시 메모리로 가져오는 행위(swap in) 이 모든 행위를 swapping이라고 한다.즉, medium-term scheduler은 스케줄링이 중간 즈음에 일어나는 것을 의미한다. os가 지켜보고 있다가 어떤 애를 몰아낼 것인지를 결정하는것으로 os가 쭉 메모리를 뒤져가지고 현재 사용되지 않은 어느 놈을 하드디스크로 몰아낼 것인가를 결정하는 것을 의미한다.
Context switching(문맥전환)
프로세스가 메인메모리에 여러개 있어도 CPU에서는 하나밖에 일 하지 못한다. 따라서 프로세스간의 이동을 말한다.