02. System Structure & Program Execution 1
02. System Structure & Program Execution 1
시스템 구조와 프로그램 실행
운영체제에 대한 내용을 들어가기에 앞서 컴퓨터 시스템에서 하드웨어가 어떻게 동작하고 프로그램이 그 위에서 어떻게 돌아가는지 공부하는 챕터
컴퓨터 시스템 구조
memory - cpu의 작업 공간 /CPU 에서 매clock 메모리에서 instruction 기계어를 읽어 들여 실행
IO device - input/output device 들이 있음 하드디스크는 두개의 역할을 다한다.
각각을 전담하는 작은 cpu를 가지고 있는덱 그것을 device controller 라고 한다.
Main Cpu 작업공간이 Main memory라고 한다면 각 device에smls local buffer 라는 것이 있다.
cpu와 i/o device 성능 속도에는 많은 차이가 난다.
cpu안엔 메모리보다 더빠르면서 정보를 저장할 수 있는 register라는 부분이 있음
mode bit 은 운영체제인지 사용자 프로그램인지 구분해줌
interrupt line 은 cpu가 다음번에 실행할 instruction에 관한 정보
한가지 문제가 있는데 프로그램이 무한루프를 돌때에 io작업이 아닌 cpu만 사용한다면 계속 cpu를 쓰고 다른 프로그램으로 넘어가지 못할 수 가 있음 그래서 cpu엔
timer가 있음 -> 특정프로구램 독점 막기위함 / timer에 값을 셋팅 후에 사용자 프로그램으로 넘어가는 형식
os가 cpu에 줄떄는 자유롭지만 뺏을때는 그렇지 못하다. 그래서 추가적 하드웨어를 추가하는 것!
운영체제가 cpu를 얻게되면 timer에 값셋팅후 넘겨줌
사용자 프로그램은 직접 io를 접근할 수 없음 무조건 운영체제를 거쳐야 함 -> 스스로 cpu를 운영체제에 넘겨주게됨
프로그램이 disk에서 뭔가를 읽으라는 명령이 왔을때 컨트롤러에 시키고 그동안 cpu는 다른 프로그램과 작업중이다가 처리를 다하면 interrupt를 걸어서 buffer에 작업을 읽어와서 아까 필요하다고 한 프로그램에 넘겨주고 하던일 마저 처리하게 됨.
mode bit
사용자 프로그램의 잘못된 수행으로 다른 프로그램이나 운영체제에 피해 방지를 위한 보호 장치 필요
0 : kernal mode 시스템 모드, os 코드 수행
무슨일이든 할 수 있게 정의, io나 메모리에 접근가능
1 : 사용자 모드 , 사용자 프로그램 수행
제한된 instruction만 접근 가능, interrupt나 exception 발생시 자동으로 mode bit이 0으로 바뀌게 됨
timer
정해진 시간이 흐른 뒤 os에 제어권이 넘어갈수 있도록 interrupt 발생
매 clock당 1씩 감소, 0 이되면 timer interrupt
cpu 를 특정프로그램이 독점하는 것을 막는것이 목표
Device controller
I/O장치 관리하는 작은 cpu
제어 정보를 위해 control register,status register을 가지며 data register역할을 하는 local buffer을 가진다.
I/O 종료시 interrupt로 cpu에 알림
- device driver 장치구동기 (Soft)
os 코드 중 각 장치별 처리 루틴
- device controller 장치제어기(Hard)
각 장치 통제 cpu 역할
DMA
직접 메모리를 접근 할수있는 거
io장치가 interrupt너무 자주 걸면 cpu가 방해를 많이 받으니까 오버헤드를 줄이기 위해
작업이 끝낫으면 dma가 직접 내용copy까지 해줘서 훨씬 효율적으로 이용 가능
I/O 수행
모든 입출력 명령은 특권 명령
사용자 프로그램이 system call을 이용해 운영체제에 io 호출
Interrupt
인터럽트를 당한 시점의 레지스터와 program couter를 저장후 cpu 제어 인터럽트 처리 루틴에 넘김
널ㄼ은 의미에서
- interrupt (Hard) ,하드웨어 인터럽트 : 하드웨어가 발생시킨 인터럽트
Vs Trap(Soft), 소프트웨어 인터럽트 : Exception, 프로그램이 오류를 범한 경우
System call, 프로그램이 커널 함수를 호출하는 경우
- 인터럽트 벡터, 해당 인터럽트의 처리 루틴 주소를 가지고 있음
- 인터럽트 처리 루틴(인터럽트 핸들러), 해당 인터럽트를 처리하는 커널 함수