이화여대 반효경 교수님의 운영체제 강의를 수강하고, 내용을 정리한것.
CPU : 매 클럭 사이클마다 메모리에서 기계어를 하나씩 읽어서 실행
Memory : CPU의 작업 공간
I/O device : 키보드,마우스 입력장치 , 모니터는 출력장치, 하드디스크는 디스크에 있는 데이터를 입력하는 입력 장치이기도 하면서 컴퓨터에서의 처리결과를 저장하기도는 하는 출력장치기도함
device controller : 각 입출력장치에 붙어서 각 디바이스를 전담하는 작은 cpu역할을 하는 컨트롤러
사용자 프로그램의 잘못된 수행(무한루프 같은) 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치
cpu는 항상 instruction 하나를 수행하면 interrupt line을 체크해 interrup이 발생 했는지를 확인함
Mode Bit은 하드웨어적으로 두 가지의 operation을 지원해준다
보안을 해칠 수 있는 중요한 명령어는 커널 모드에서만 수행 가능한 "특권명령"으로 규정
interrup이나 Exception이 발생하면 하드웨어가 mode bit을 0으로(커널모드)로 바꿈
OS가 사용자 프로그램에게 CPU를 넘기기전에 mode bit을 1로 셋팅하고 넘겨줌
Interrupt line은 항상 프로그램이 memory 영역만을 사용해서 작동하기는 어렵기 때문에, I/O device 접근을 위해 프로그램 실행 중 interrupt를 걸어 해당 device에서 데이터를 읽거나 씀
정해진 시간이 흐른 뒤 OS에게 CPU제어권이 넘어가도록 interrupt를 발생시키는 역할을 함(무한 루프 방지에 딱이네..)
타이머는 매 클럭 틱 때마다 1씩 감소
타이머 값이 0이 되면 타이머 인터럽트 발생
CPU를 특정 프로그램이 독점하는 것으로부터 보호(CPU의 time sharing 보장)
위의 역할 말고도 현재 시간을 계산하기 위한 용도로 사용되기도 함
해당 IO 장치유형을 관리하는 작은 CPU
제어 정보를 위해 control register , status register를 가짐(CPU의 지시를 위한 레지스터 예를 들어 "local buffer" 에 들어간 데이터를 출력하라 뭐 이런거)
local buffer를 가짐(일종의 data register) - 만약 키보드에서 'a'라는 입력이 들어오면 이 'a'가 local buffer에 저장됨
입출력은 실제 device와 local buffer사이에서 일어나게됨
device controller는 입출력이 끝났을 경우 interrup를 걸어서 CPU에게 입출력이 끝났음을 알려줌
device driver(장치 구동기) : OS code 중 각 장치별 처리 루틴을 의미 - Software영역
device Controller(장치 제어기) : 각 장치를 통제하는 일종의 작은 CPU - Hardware
입출력의 과도한 interrup를 방지하기 위한 Controller
바이트 단위가 아니라 block 단위로 인터럽트를 발생시키며, 이로CPU를 효율적으로 사용할 수 있도록 도와주는 역할
CPU의 도움이나 개입없이 device controller가 divice의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
DMA controller와 CPU가 동시에 메모리에 접근하지 않도록 조율하는 역할 (메모리의 일관성을 보장)
모든 입출력 명령은 특권 명령
사용자 프로그램의 입출력 과정
좁은 의미 : interupt 당한 시점의 레지스터와 program counter를 저장 한 후 CPU의 제어를 interrupt 처리 루틴으로 넘김
넓은 의미
intterup vector : 해당 인터럽트의 처리 루틴 주소를 가지고 있음
interrupt Service Routine(인터럽트 핸들러,인터럽트 처리루틴) : 해당 인터럽트를 처리하는 커널 함수, 운영체제에서 각 종류의 intterupt마다 정의되어 있음
1. 입출력을 수행하는 special instruction에 의해
2. Memory Mapped I/O에 의해, 예를 들어 100번지 접근은 일반 메모리에 접근이지만, 1000번지는 사실상 입출력을 하는 명령임
code : 위 그림에서 나와 있음
data : CPU , Memory, disk등의 하드웨어 자원을 관리하기 위한 자료구조나, 각종 프로세스를 관리하기 위한 자료구조가 있고, 각 프로세스의 상태나 CPU의 사용정보, 메모리의 사용 정보 등을 유지하기 위한 PCB라는 것도 있음
stack : 일반적은 프로그램 스택영역과 같지만, 커널의 스택영역은 현재 수행 중인 프로세스마다의 별도의 스택을 두어 관리함
사용자 정의 함수 : 자신의 프로그램에서 정의한 함수 - 사용자 프로그램의 주소공간에 있음
라이브러리 함수 : 자신의 프로그램의 실행 파일에 포함되어 있는 함수 - 사용자 프로그램의 주소공간에 있음
커널 함수 : 운영체제의 프로그램의 함수, 커널함수의 호출 = 시스템 콜 - 커널 주소공간에 있음
Reference
http://www.kocw.net/home/cview.do?cid=3646706b4347ef09