메모리의 주소는 한 칸당 1byte의 크기를 가진다.
32 bit Architecture에서 가질 수 있는 메모리의 최대크기는 2^32 byte = 4GB
How to provide the illusion of many CPU's
-> Time sharing !
Running one process, then stopping it and running another by round-robin fashion
어떻게 수행되는 놈을 끊고 다른 애를 실행했다가 끊었던 놈을 실행할 수 있을까 ?
스케쥴링을 배우면 알 수 있다 ! 아직까지는 Time sharing을 통해 illusion을 주는 것만 이해하자
계속해서 나오는 Process에 대해서 알아보자 Program과 착각하기 쉽지만 다르다는 것을 알아야 함 !
Program - Executable Object File !
Code -> Compiler & Linker -> Program -> Loader - > Process
프로그램은 Disk에 존재하며 Life cycle이 없다.
디스크에 있는 프로그램을 Memory에 올린다면 Process가 되며 Life cycle이 있다.
Program은 Instruction의 집합 즉, 명령어와 그 명령어를 실행하기 위한 코드의 집합
Disk에 있기 때문에 CPU의 권한을 바로 받을 수가 없다. 따라서 수행될 준비 아직 X
Process는 Instance of a running program
실행되고 있는 프로그램의 형태 ! 즉, 메모리에 올라가있는 상태다
그래서 프로세스가 뭔데 ?
프로세스를 정확하게 이해하기 위해서는 state - model을 통해 알 수 있다.
Process는 state를 가지고 있다.
Program은 그냥 존재함이라고 표현한다면 Process는 어떠한 형태를 가지고 있다고 말할 수 있다.
각 State의 기준은 수행되기 위한 resource를 가지고 있는가 / CPU에 대한 권한을 가지고 있는가이다.
그림을 보며 설명해보자면 P1, P2, P3가 있다고 가정하자
P1이 실행중일 때는 Running-state에 있으며 P2와 P3는 Ready-State(Queue에 대기)에 있다.
그리고 I/O에 요청이 들어온다면 Blocked-state가 된다.
여기서 I/O에 입력이나 출력이 끝난닥 해도 Running-state로는 가지 못한다
Why ? Blocked-state는 수행을 위한 resource가 없기 때문에 Ready-State만 갈 수 있다 !
running state에서 ready state로 가는 걸 preemption이라고 한다.
지금 수행하는 걸 멈추는 건 맞지만 running에서 ready로 옮기라는 뜻이며 옮길 수 있다면 preemptive하다고 말한다.
Main memory의 수용량이 더 많은 process를 들고 있기에는 불충분할 경우 Swapping을 한다.
Swapping : 메인 메모리(주 기억장치)로부터 디스크(보조 기억장치)로 프로세스의 일부 혹은 전체를 옮기는 것을 의미한다.
Suspend : memory에 용량이 부족하여 새로 load를 하지 못해 Memory에서 지금 당장 사용할 필요가 없거나 중요한 것이 덜한 process를 OS가 선택해서 Disk로 보냄
ready에 있는 process보단 blocked에 있는 process를 빼는 것이 reasonable
Memory와 Disk에 접근횟수를 줄이기 위해서 Disk에 위치한 Swap space를 사용 (접근 속도가 느림)
3 에서 I/O 요청
6 에서 I/O 도착
8 에서 끝나거나 Time slice 다 씀
The OS has some key data structures that track various relevant pieces of information about individual process
OS는 각 Process에 대한 정보를 추적하는 자료구조를 가지고 있다. (PCB)
PID(Process Identification Number) - 이름
Process state : running, blocked
Program counter : location of instruction to next execute
CPU registers : contents of all process - centric registers
Scheduling information - 우선순위
Memory management information - 메모리가 어디에 있는지 알아야 함
I/O status information - 어떤 IO를 사용하였는지
Accounting information
Context save area