해당 게시글은 kocw에서 제공하는 금오공과대학교 최태영 교수님의 무료 강의를 공부하고 정리하기 위해서 만들어졌습니다.
역할
- 자원할당
- 제어
- 사용자가 사용하기 편하게 제공
- 자원관리
커널(kernel)
- 운영체제의 핵심
- 컴퓨터가 켜지고 꺼지기 전까지 실행되는 프로그램
- 때로는 cd rom에 들어가 있는 패키지 자체를 운영체제 라고도 한다.
- 이 cd rom 패키지 작은 한 부분을 커널 이라고 한다.
- 그리고 나머지 부분을 system program 이라고 한다.
- 이외 밖에서 동작하는 것을 Application program이라고 한다.
bootstrap program(computer startup)
- 메모리에 올라와야 프로그램이 실행된다고 할 수 있음
- 하드디스크에 복사된 os 패키지에서 커널을 메모리에 올려서 실행해야함
- 이 것을 bootstrap program 이라고 한다.
- bootstrap program은 두 부분으로 나눠진다.
- rom안에 bootstrap program이 존재
- 하드 디스크의 0번 블럭을 읽어서 메모리에 올리는 역할을 수행
- 이 때 메모리의 program counter(PC)가 0번 블럭을 가리킨다.
- 0번 블럭은 커널을 읽어서 메모리에 올리는 역할을 한다.
- 어플리케이션을 하나 띄운다.
- windows: ba shell(bash)
- linux: gui exploror
- 이후에 사용자 입력을 기다린다.
PC(program counter)는 다음에 수행될 명령을 가리킨다.
운영체제와 하드웨어
- 하드웨어와 운영체제 사이에는 버스(bus)라는 통로가 존재
- 이 통로를 통해서 cpu가 메모리에 있는 결과를 계산하고 계산된 결과를 메모리에 저장한다.
- 하드웨어와 연결된 I/O를 연결하기 위해 마이크로 프로세스(메모리)를 사용
- 컨트롤러안에 존재
- 입력을 저장하기 위해 사용
- 성능이 많이 떨어짐
- 이것을 local buffer라고 부른다.
- local buffer가 다 차면 버스를 통해 메모리에 저장한다.
- 이것을 통해 병렬적으로 처리할 수 있게 된다.
- 작업 수행을 마쳤는지 확인하기 위해 cpu는 인터럽트(interrupt)방식을 사용한다.
- 수행을 마쳤을 때 이것을 알리는 것
- 각각의 컨트롤러가 수행을 마쳤을 때 cpu로 알려준다.
- 인터럽트가 걸리면 cpu는 local buffer 안의 내용을 메모리에 옮긴다.
- cpu가 인터럽트를 처리하는 것을 interrupt handling이라고 한다.
- 이 때 수행되는 것은 memory copy이다.
- 하드웨어가 인터럽트를 발생시키기 위해 메모리에 interrupt vector라는 배열을 만들어서 처리한다.
- 4 byte로 이루어져 있으며,
- interrupt handler 루틴 들의 주소가 저장된다.
- 각 주소는 interrup handler 가 들어있다.
- 인터럽트 시나리오
- 명령이 하나 실행된다.
- 명령어 실행 도중 인터럽트가 하나 발생
- 하드웨어의 인터럽트 플래그가 1로 변경된다.
- 명령이 수행되고 나서 cpu는 각 하드웨어의 인터럽트 플래그가 세워진게 있는지 확인
- 인터럽트 플래그가 세워져 있으면, 다음 수행될 PC를 저장한다.(특정 레지스터)
- 몇번 하드웨어에서 인터럽트가 발생했는지 확인한다.
- 메모리의 인터럽트 벡터에 해당 하드웨어 번호의 주소를 가져온다.(인터럽트 핸들러 주소)
- 저장이 끝난 PC에 덮어쓴다.
- 인터럽트 핸들러가 실행된다.
- return program couner 명령어를 통해 특정 레지스터에 저장해 놓은 다음 명령을 PC에 복원시킨다.
- 해당 시나리오를 통해 하드웨어적으로 인터럽트가 실행 되더라도 실질적인 수행은 소프트웨어를 통해서 이뤄진다는 것을 알고 있을 것