http://www.kocw.or.kr/home/cview.do?mty=p&kemId=1046323
운영체제
운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각
www.kocw.net
해당 강의를 보고 개인적인 정리를 하는 포스팅입니다.
I/O 디바이스
CPU 가 직접 명령을 내리지 않고, 디바이스에 붙어있는 Device Controller 가 해당 디바이스의 CPU 역할을 하며 메인 CPU 의 명령을 처리. Local Buffer 라는 I/O 처리를 맡는 각 디바이스별 작은 메모리 역할을 하는 녀석들 함께 존재함.
디바이스 컨트롤러
- I/O 장치 유형을 관리하는 일종의 작은 CPU
- 제어 정보를 위해 Control Register, Status Register 를 지님
- Local Buffer (Data Register) 를 지님
I/O 는 실제 Device 와 Local Buffer 간의 상호 작용이다.
Device Controller 는 I/O 완료시 Interrupt 를 통해 Cpu 에게 완료 사실을 알림.
DMA Controller (Direct Memory Controller)
DMA?
메모리 버퍼, 포인터, 카운터를 사용하여 장치 제어기가 CPU이 도움없이 DMA 컨트롤러를 이용하여
데이터를 직접 메모리로 전송하는 입출력 방식
고속의 I/O 장치들로 인해 수많은 Interrupt 에 의한 CPU 오버 헤드 발생.
DMA 컨트롤러가 Interrupt 를 모아 처리하여 오버헤드 최소화
CPU 없이 주기억 장치와 보조 기억 장치에 접근이 가능. 각 접근 제어기에 의해 DMA 접근이 관리됨.
CPU의 중재 없이 device controller 가 device 의 buffer storage 의 내용을 block 단위로 직접 전송
바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴 .
CPU 구성요소
- register : 메모리보다 훨씬 더 빠른 속도의 CPU 의 작업 처리를 위한 작은 저장공간
- mode bit: Cpu 에서 수행되는 연산이 운영체제의 것인지, 사용자 프로그램인지를 구분 하는 bit (0, 1)
- Interrupt line: Interrupt 를 저장하는 공간, CPU 가 제어권을 여기저기 옮겨다니면서 주기적으로 확인. Interrupt 가 있는 경우 OS가 제어권을 얻어 해당 작업을 수행함.
Mode bit
1 - 사용자 모드 2 - 커널 모드(= 모니터 모드) 2가지 모드가 존재.
- 보안을 해칠 수 있는 중요한 명령어 커널 모드에서만 수행 가능한 특권 명령 으로 규정
- Interrupt 나 Exception 발생시 Mode bit 을 0으로 변경
- 사용자 프로그램에게 CPU 를 넘기기 전 Mode bit 을 1로 변경
Timer
사용자 프로그램 수행시, 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시켜
특정 프로그램이 CPU 를 독점하는것을 방지함
(타이머는 클럭 틱 마다 1 씩 감소, 타이머의 값이 0 이 되면 타이머 인터럽트가 발생)
시간 계산, time sharing 을 구현하기 위해 이용
Interrupt
특정 상황에서 CPU 의 제어권을 획득하기 위한 방법
인터럽트 당한 시점의 레지스터와 Program Counter 를 저장한 후 CPU 의 제어를 인터럽트 처리 루틴으로 이동.
현대 운영체제는 인터럽트에 의해 구동된다고 할 수 있음.
종류
- 하드웨어 인터럽트: 일반적인 의미의 인터럽트, 하드웨어가 발생시킨 인터럽트 (I/O 작업의 완료 등)
- 소프트웨어 인터럽트(Trap): Exception(프로그램 오류) 와 System Call(프로그램이 커널함수를 호출하는 경우) 등이 있음.
용어정리.
- 인터럽트 벡터: 해당 인터럽트의 처리 루틴 주소를 보유
- 인터럽트 처리 루틴(= Interrupt Service Routine, 인터럽트 핸들러): 해당 인터럽트를 처리하는 커널 함수
간략한 소개로 이해한 I/O 의 수행
모든 입출력은 특권 명령.
- 시스템 콜 (운영체제에게 커널명령인 I/O 명령 요청)
- Trap 을 통해 인터럽트 벡터의 인터럽트 핸들러 위치로 이동
- 올바른 I/O 요청인지 확인 후 수행
- I/O 완료 시, 로컬 버퍼에 결과 값 저장 및 디바이스 컨트롤러가 Interrupt 를 발생시켜 I/O 의 처리 완료를 알림.
간단 메모리의 동작
당장 필요한 부분만을 실제 메모리에 올려두고, 나머지는 디스크 영역의 Swap Area 에 내려놓아 스와핑 해가며 사용.
함수
사용자 정의 함수 - 내 프로그램에서 직접 정의한 함수
라이브러리 함수 - 외부에서 정의한 것을 가져다 쓴 함수. 내 프로그램의 실행 파일에 포함됨
커널 함수 - 운영체제의 것. 이것을 호출하는 것을 시스템 콜 이라고함. 라이브러리 함수와 다르게 실행파일에 직접 포함되는 것이 아니기 때문에 사용자 프로그램이 CPU 를 가진상태에서 자신의 주소공간에서 직접 실행하는 것이 아니라 시스템 콜을 통하여 커널모드에서 수행됨.
'OS' 카테고리의 다른 글
| CPU Scheduling (0) | 2022.03.26 |
|---|---|
| 프로세스 생명주기 (0) | 2022.03.17 |
| Thread 쓰레드 (0) | 2022.02.27 |
| Process (0) | 2022.02.23 |
| 운영체제 Intro (0) | 2022.02.05 |