본문 바로가기

OS

System Structure & Program Execution

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