ISA (Instruction Set Architecture)
โ๏ธ ๋ชจ๋ ์ปดํจํฐ๋ ์๊ธฐ ์์ ๋ง์ ์ธ์ด๋ฅผ ๊ฐ์ง๋ค.
โ๏ธ machine ์ state ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๋ช ๋ น์ด์ ์งํฉ ๊ทธ๋ฆฌ๊ณ ๊ทธ์ ํ์ํ ๊ตฌ์กฐ๋ค์ด๋ค.
โ๏ธ ๊ณ ์์ค ์ธ์ด์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ํํธ์จ์ด๊ฐ ์์คํ ์ํํธ์จ์ด์ธ ์ด์ ๋ธ๋ฌ์ ์ปดํ์ผ๋ฌ๋ฅผ ๊ฑฐ์ณ ๋ก์ฐ ๋ ๋ฒจ์ ์ธ์ด๋ก ๋ฒ์ญ๋์ด ํ๋์จ์ด์ ๋ง์ฃผํ๊ฒ ๋๋ ์์ญ, ์ด๋ฌํ ์ธํฐํ์ด์ค๋ฅผ ์นญํ๋ค.
program
โ๏ธ ์ปดํจํฐ ๋์คํฌ์ ์ ์ฅ๋์ด์๋ ์คํ ๊ฐ๋ฅํ ์คํํ์ผ๋ก(.exe), a sequence of machine instruction ์ด๋ผ ํ ์ ์๋ค.
process
โ๏ธ A process is an instance of a program in execution : ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ํ ์ธ์คํด์ค
โ๏ธ ํ๋ก์ธ์ค๋ ์ํ๋ฅผ ๊ฐ์ง๋ค.
โ๏ธ Logical control flow : Each process has an exclusive use of the processor.
โ๏ธ Private address space : Each process has an exclusive use of private memory.
๊ฐ๊ฐ์ ๋
๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ CPU๋ฅผ ํผ์์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํ๋ค. (virtual memory)
๋ฉํฐํ์คํน์ ์ํด์ ์ผ์ ์๊ฐ์ ์ฃผ๊ณ ๋์๊ฐ๋ฉด์ (time slice) ๊ฐ๋ฅํ๋ค.
process control block
โ๏ธ A data structure in the OS Kernel that contains the information needed to manage a particular process
โ๏ธ ์ด ์ค register state ๋ฅผ context ๋ผ ํ๋ค.
โ๏ธ Created and managed by the operating system
kernel
โ๏ธ ์ปดํจํฐ์ ํ๋์จ์ด ์์๊ณผ ์ถ์ํ ์์์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ๋ชฉํ์ด๋ค. ์ถ์ํ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ํ๋๋ฟ์ธ ํ๋์จ์ด๋ฅผ ์ฌ๋ฌ ์ฌ์ฉ์๋ค์ด ๋ฒ๊ฐ์ ์ฌ์ฉํ ์ ์๋๋ก ๋ง์น ์ฌ๋ฌ๊ฐ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ๊ธฐ์ ์ด๋ค. ์์์ผ๋ก๋ CPU task & process, ๋ฉ๋ชจ๋ฆฌ page & segmetn, ๋์คํฌ ํ์ผ, ๋คํธ์ํฌ ์์ผ ๋ฑ์ด ์๋ค.
context
โ๏ธ The kernel maintains a context for each process
โ๏ธ The context is the state of a process that the kernel needs to restart a preempted process
scheduling
โ๏ธ ์คํํ ์ค๋น๊ฐ ๋์ด์๋ ํ๋ก์ธ์ค๋ ready ์ํ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ์๋ค. ๋ค์์ ์ด๋ค ํ๋ก์ธ์ค๋ฅผ CPU์ dispatch ํ ๊น?
โ๏ธ ready queue, ์ฐ์ ์์๋ฅผ ๋ฐ์ ธ์ dispatch ํ๋ค.
โ๏ธ ๊ทธ ์ฐ์ ์์๋ฅผ ๊ณตํํ๊ฒ ํ๋๋ก ํ๋ ๊ณผ์
โ๏ธ kernel ์์ scheduling ์ ๋ด๋นํ๋ ๊ฒ์ dispatcher ๋ผ ํ๋ค.
timer
โ๏ธ ์ ํด์ง ์๊ฐ์ด ํ๋ฅธ ๋ค ์ด์์ฒด์ ์๊ฒ ์ ์ด๊ถ์ด ๋์ด๊ฐ๋๋ก ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์์ํจ๋ค
โ๏ธ ํ์ด๋จธ๋ ๋งค ํด๋ญ ํฑ ๋๋ง๋ค 1์ฉ ๊ฐ์
โ๏ธ ํ์ด๋จธ ๊ฐ์ด 0์ด ๋๋ฉด ํ์ด๋จธ ์ธํฐ๋ฝํธ ๋ฐ์
โ๏ธ CPU๋ฅผ ํน์ ํ๋ก๊ทธ๋จ์ด ๋ ์ ํ๋ ๊ฒ์ผ๋ก๋ถํฐ ๋ณดํธ
- ํ์ด๋จธ๋ time sharing ์ ๊ตฌํํ๊ธฐ ์ํด ๋๋ฆฌ ์ด์ฉ๋จ
- ํ์ด๋จธ๋ ํ์ฌ ์๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํด์๋ ์ฌ์ฉ
mode bit
โ๏ธ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์๋ชป๋ ์ํ์ผ๋ก ๋ค๋ฅธ ํ๋ก๊ทธ๋จ ๋ฐ ์ด์์ฒด์ ์ ํผํด๊ฐ ๊ฐ์ง ์๋๋ก ํ๊ธฐ ์ํ ๋ณดํธ ์ฅ์น ํ์
โ๏ธ Mode bit ๋ฅผ ํตํด ํ๋์จ์ด์ ์ผ๋ก ๋ ๊ฐ์ง ๋ชจ๋์ operation ์ ์ง์ํ๋ค
- 1 ์ฌ์ฉ์๋ชจ๋ : ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ์ํ
- 0 ๋ชจ๋ํฐ๋ชจ๋ : OS ์ฝ๋ ์ํ
- ๋ณด์์ ํด์น ์ ์๋ ์ค์ํ ๋ช ๋ น์ด๋ ๋ชจ๋ํฐ ๋ชจ๋(์ปค๋๋ชจ๋, ์์คํ ๋ชจ๋) ์์๋ง ์ํ ๊ฐ๋ฅํ ํน๊ถ๋ช ๋ น์ผ๋ก ๊ท์
- Interrupt ๋ Exception ๋ฐ์์ ๐ ํ๋์จ์ด๊ฐ mode bit ์ 0 ์ผ๋ก ์ธํ
- ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์๊ฒ CPU ๋ฅผ ๋๊ธฐ๊ธฐ ์ ์ ๐ mode bit ์ 1 ๋ก ์ธํ
DMA (Direct Memory Access)
โ๏ธ ๋น ๋ฅธ ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ๊น์ด ์๋๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ
โ๏ธ CPU์ ์ค์ฌ ์์ด device controller๊ฐ device์ buffer storage ์ ๋ด์ฉ์ ๋ฉ๋ชจ๋ฆฌ์ block ๋จ์๋ก ์ง์ ์ ์ก
โ๏ธ ๋ฐ์ดํธ ๋จ์๊ฐ ์๋ block ๋จ์๋ก ์ธํฐ๋ฝํธ๋ฅผ ๋ฐ์
โ๏ธ Parent Process ๊ฐ Children Process ๋ณต์ ์์ฑ
โ๏ธ ํ๋ก์ธ์ค์ ํธ๋ฆฌ (๊ณ์ธต ๊ตฌ์กฐ) ํ์ฑ
โ๏ธ ํ๋ก์ธ์ค๋ ์์์ ํ์๋ก ํจ
int main()
{
int pid;
pid = fork();
if (pid == 0)
printf ("I am child\n");
else if (pid > 0)
printf ("I am parent\n");
}
โ๏ธ ์์์ ๊ณต์
โ๏ธ ์ํ (Execution)
โ๏ธ ์ฃผ์ ๊ณต๊ฐ
โ๏ธ ํ๋ก์ธ์ค๊ฐ ๋ง์ง๋ง ๋ช ๋ น์ ์ํํ ํ ์ด์์ฒด์ ์๊ฒ ์ด๋ฅผ ์๋ ค์ค exit()
โ๏ธ ๋ถ๋ชจ ํ๋ก์ธ์ค๊ฐ ์์์ ์ํ์ ์ข ๋ฃ์ํด abort
โ๏ธ ์ด์์ฒด์ ๊ฐ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํ๋ก์ธ์ค๋น ์ ์งํ๋ ์ ๋ณด๋ก,
โ๏ธ ๊ตฌ์กฐ์ฒด๋ก ์ ์ง๋๋ค
1) OS๊ฐ ๊ด๋ฆฌ์ ์ฌ์ฉํ๋ ์ ๋ณด
2) CPU ์ํ ๊ด๋ จ ํ๋์จ์ด ๊ฐ
3) Memory ๊ด๋ จ
4) File ๊ด๋ จ
process control block also called a task control block
identification
processor state information
IPC; Inter-Process Comumunication
(... ๊ต์ฌ ์ฐธ๊ณ )
Program counter.
The counter indicates the address of the next instruction to be executed for this process.
CPU registers.
The registers vary in number and type, depending on the computer architecture. They include accumulators, index registers, stack pointers, and general-purpose registers, plus any condition-code informa- tion. Along with the program counter, this state information must be saved when an interrupt occurs, to allow the process to be continued correctly afterward when it is rescheduled to run.
CPU-scheduling information.
This information includes a process prior- ity, pointers to scheduling queues, and any other scheduling parameters. (Chapter 5 describes process scheduling.)
Memory-management information.
This information may include such items as the value of the base and limit registers and the page tables, or the segment tables, depending on the memory system used by the operating system (Chapter 9).
Accounting information.
This information includes the amount of CPU and real time used, time limits, account numbers, job or process numbers, and so on.
I/O status information.
This information includes the list of I/O devices allocated to the process, a list of open files, and so on.
program status word
ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ์คํ
์ดํธ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค.
โ๏ธ contatins condition codes and other status information of the currently running process
โ๏ธ ex) EEFLAGS register on Intel x86 processors
Process spawing
Process termination
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ด์์ฒด์ ์ ์๋น์ค๋ฅผ ๋ฐ๊ธฐ ์ํด ์ปค๋ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ
system call fork
์ ๋ํด ์ดํด๋ณด์
int fork (void)
โ๏ธ Creates a new process (child process) that is identical to the calling process (parent process)
โ๏ธ Returns 0 to the child process
โ๏ธ Returns child'spid
to the parent process
โ๏ธ It is called once but returns twice. ์ฒ์ ์ถ๋ฐ์ ๊ฐ์ผ๋, ๊ฐ๊ฐ์ ๋ ๋ฆฝ์ ์ธ VM์ ๊ฐ์ง๊ณ ๊ฐ์ ์คํ๋๋ค.
โ๏ธ ๋๊ฐ ๋จผ์ ์คํ๋ ์ง๋ undefined! ์ค์ผ์ค๋ง์ ๋ฐ๋ผ ๋๋ง๋ค ๋ค๋ฅผ ์ ์๋ค.
โ๏ธ Shared files : oth parent and child print their output on the same screen
void exit(int status)
โ๏ธ Terminate a process with an exit status : Normally with status 0
โ๏ธatexit()
registers functions to be executed upon exit
ํ๋ก์ธ์ค๋ State๊ฐ ๋ณ๊ฒฝ๋๋ฉฐ ์ํ๋๋ค
โ๏ธ Running
โ๏ธ Ready
โ๏ธ Blocked(wait, sleep)
โ๏ธ New
โ๏ธ Terminated
(unix ์์๋ terminated
์ํ๋ฅผ zombie
์ํ๋ผ๊ณ ํ๋ค)
event
๋ง๋ค queue
๊ฐ ์กด์ฌํ๋ค.
โ๏ธ ์ธ๋ถ์ ์ธ ์ด์ ๋ก ํ๋ก์ธ์ค์ ์ํ์ด ์ ์ง๋ ์ํ
โ๏ธ ํ๋ก์ธ์ค๋ ํต์งธ๋ก ๋์คํฌ์ Swap out ๋๋ค
โ๏ธ Blocked vs. Suspended
- Blocked : ์์ ์ด ์์ฒญํ event ๊ฐ ๋ง์กฑ๋๋ฉด Ready
- Suspended(stopped) : ์ธ๋ถ์์ resume ํด์ฃผ์ด์ผ Active
๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ์ซ๊ฒจ๋์ ์คํํ ์ค๋น๊ฐ ๋์ด์์ง ์๋ ํ๋ก์ธ์ค๋ค์ด๋ค. page-fault (page-miss)
๊ฐ ์๊ธธ ์ ์๋ค.
Swapping
Suspended Process
์ด๋ฅผ ๊ณ ๋ คํ๋ฉด State ๊ฐ ๋ฐ๋๋ค. ์๋ ๊ทธ๋ฆผ์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ state model ์ด๋ค.
์ธํฐ๋ฝํธ ๋นํ ์์ ์ ๋ ์ง์คํฐ์ program counter ๋ฅผ saveํ ํ CPU์ ์ ์ด๋ฅผ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ ๋ฃจํด์ ๋๊ธด๋ค.
โ๏ธ Interrupt (ํ๋์จ์ด ์ธํฐ๋ฝํธ) : ํ๋์จ์ด๊ฐ ๋ฐ์์ํจ ์ธํฐ๋ฝํธ (๋์คํฌ ์ปจํธ๋กค๋ฌ, ํ์ด๋จธ ๋ฑ)
โ๏ธ Trap (์ํํธ์จ์ด ์ธํฐ๋ฝํธ) :
โ๏ธ ๊ด๋ จ ์ฉ์ด
Kernel ๋ก ๋ค์ด๊ฐ๋ ๋ฐฉ๋ฒ์ด๋ค. ์คํ ์ค์ด๋ ํ๋ก์ธ์ค๋ register state ๊ฐ pcb ์ ์ ์ฅ๋๊ณ suspended (swap ์ด ์๋ pause ์ ์ด๋ฏธ) ๋๋ค.
Exception, Interrupt ๋ ๋ฉ์นด๋์ฆ์ ๋น์ทํ๋ ๋ฐ์ ์์ธ์ด ๋ค๋ฅด๋ค.
Interrupts
- Exception : ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์์ ํน์ ๋ช ๋ น์ด์ ์ํด ๋ฐ์ํ ์์ธ ์ํฉ์ธ๋ฐ, CPU๊ฐ ๋ ์ด์ ํธ๋คํ ์ ์๋ ์ํฉ
- Generated by an instruction in the currently running process due to an erroneous condition.
- Synchronous, internal
- ex)
page faults (page miss)
- Interrupt : ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ฆ, CPU ๋ด๋ถ์ ์๊ด์ด ์๋ ๊ฒฝ์ฐ
- Asynchronous, external events
- ex) ์ฐ๋ฆฌ๊ฐ ๋ฆฌ๋ถํธํ๋ ๊ฒฝ์ฐ, ๋์คํฌ๊ฐ CPU์๊ฒ ๋ณด๋ด๋ ๋ฉ์ธ์ง, ๊ฐ์๊ธฐ ๋ ธํธ๋ถ์ด ๊บผ์ง๋ ๊ฒฝ์ฐ, ๋ก๋ด์ด ๊ธธ์ ๊ฑท๋ค๊ฐ ๋์ ๋ง๋ ๊ฒฝ์ฐ ๋ฑ
CPU ๋ Clock Cycle (0.3 nano seconds) ๋ง๋ค ์ธ๋ถ Interrupt ๋ฐ์ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ์๋ค๋ฉด ์ฒ๋ฆฌํ๊ณ ๋ค์ ๋์์จ๋ค.
CPU ์นฉ ๋ด๋ถ pin ์ค ํ๋๊ฐ interrupt pin ์๊ฒ ์ ํธ๊ฐ ์ ์ก๋๋ค. pin ์ด assault ๋์๋ค๋ฉด system bus io device ๊ฐ ์ด๋ค ์ด๋ฒคํธ์ธ์ง ์๋ ค์ค๋ค.
๋ชจ๋ ์ด๋ฒคํธ๋ง๋ค (id ๊ฐ ์๋ค) Interrupt Handler (์ด๋ฒคํธ ํธ๋ค๋ฌ) ๊ฐ ์์คํ ์ ์ ์๋์ด ์๋ค. ์ด ํธ๋ค๋ฌ ์ฝ๋๋ OS ์ฝ๋๊ฐ ์๋ firmware ์ด๋ค! ๊ทธ๋ค์ด System call ์ ํตํด ํ์ํ OS ๋ฅผ ์ฐ๊ฒฐ์์ผ์ค๋ค.
Interrupt handling mechanism
Should allow interrupts/exceptions to be handled transparently to the executing process
- When an interrupt is received or an exception condition is detected, the current task is suspended(paused) and the control automatically transfers to a handler.
- After the handler is complete, the interrupted task resumes without loss of continuity, unless recovery is not possible or the interrupt causes the currently running task to be terminated.
Caused by an event that occurs as a result of executing an instruction.
โ๏ธ Traps
: ๋ช
๋ น์ ์๋ฃํ ํ ์๋์ ์ผ๋ก ํธ๋ค๋ฌ๊ฐ ์คํ๋๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋๋ก ํ๋ค.
system calls
, breakpoints
(debug)โ๏ธ Faults
: ๋ช
๋ น์ด ์คํ์ ์๋ฃํ์ง ๋ชปํ ์ํฉ. ์ค์ง ํ fault ๋ฅผ ๋ฐ์์ํจ ๋ช
๋ น์ด๋ถํฐ ๋์ค์ ๋ค์ ์คํํ๋๋ก ํ๋ค.
page faults
(recoverable), protection faults
(unrecoverable)โ๏ธ Aborts
: ์ฌ๊ฐํ ํ๋์จ์ด์ ์๋ฌ์ด๋ค.
Caused by an event external to the processor
๋ ๊ฐ์ง ๊ฒฝ์ฐ ๋ชจ๋ I/O์ ์๋ฃ๋ ์ธํฐ๋ฝํธ๋ก ์๋ ค์ค๋ค
I/O ์์ฒญ ํ ์ ์ถ๋ ฅ ์์ ์ด ์๋ฃ๋ ํ์์ผ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ๋์ด๊ฐ
I/O๊ฐ ์์๋ ํ ์ ์ถ๋ ฅ ์์ ์ด ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ ์ด๊ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ฆ์ ๋์ด๊ฐ
[KUOCW] ๋ฐํจ๊ฒฝ ๊ต์๋, ์ต๋ฆฐ ๊ต์๋์ ์ด์์ฒด์ ๊ฐ์๋ฅผ ์๊ฐํ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์๋ชป๋ ๋ด์ฉ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค ๐