[운영체제] 2. System Structure & Program Execution

Seojin Kwak·2022년 4월 22일
0

Operating Systems

목록 보기
2/6

System Structure

Mode bit

: 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 하드웨어적 보호 장치. (CPU가 참조)

1 (사용자 모드): 사용자 프로그램 수행. 제한된 접근. 일반 명령.
0 (모니터/커널/시스템 모드): OS 코드 수행. 메모리 접근, I/O device 접근 가능.

interrupt나 exception 발생 시, 하드웨어: mode bit -> 0
사용자 프로그램에게 CPU 넘기기 전, mode bit -> 1
- 특권 명령 (privileged instruction): 보안 목적. 커널 모드에서만 수행 가능

Timer

: 정해진 시간 경과 후 운영체제에게 제어권이 넘어가도록 interrupt 발생시킴.
매 클럭마다 1씩 감소 -> 0이 되면 timer interrupt 발생
time sharing 구현에 이용. 현재 시간 계산에도 사용

특정 프로그램의 CPU 독점 방지

Device Controller (I/O Device)

: 해당 I/O 장치 유형을 관리하는 일종의 작은 CPU
- 제어 정보: status register, control register (I/O device에 명령)
- local buffer (일종의 data register): I/O device에 보낼 데이터 저장

I/O는 실제 device와 local buffer 사이에서 일어남
I/O가 끝날 경우 interrupt를 걸어 CPU에 그 사실을 알림

Device driver: OS 내에 설치되는 드라이버. OS 코드 중 각 장치별 처리 루틴. CPU가 실행하는 장치 수행 위해 필요한 코드 담고 있음. -> software
Device Controller: 각 장치 통제하는 작은 CPU -> hardware

  • I/O 수행
    : 모든 I/O 명령은 privileged instruction -> kernel mode
  1. 사용자 프로그램이 운영체제의 kernel 함수 호출 (시스템콜)
  2. sw interrupt (trap)을 사용하여 벡터의 특정 위치로 이동.
  3. controller가 interrupt vector가 가리키는 interrupt service routine으로 이동.
  4. 올바른 I/O 요청인지 확인 후 I/O 수행
  5. I/O 완료 시, 제어권을 시스템콜 다음 명령으로 옮김

Interrupt

: interrupt 당한 시점의 registerprogram counter(pc)를 저장 후, CPU의 제어를 interrupt service routine으로 넘김
- hardware interrupt: 보통의 interrupt
ex) I/O 완료, RR time quantum 만료
- trap (software interrupt): exception(프로그램의 오류), system call(프로그램이 커널 함수 호출)
ex) divide by zero, I/O 요청

  • I/O를 위한 두 가지의 interrupt
    1) I/O 요청 interrupt: trap
    사용자 프로그램이 돌아가고 있는 CPU 자신이 machine instruction을 통해 interrupt 세팅을 하고, 그 instruction이 끝난 직후 interrupt가 들어와 있는 것을 보고 interrupt handler를 부르는 것

    2) I/O 수행 완료 시그널 interrupt: hardware interrupt
    CPU가 아닌 다른 하드웨어가 CPU에게 걸어오는 interrupt

현대 운영체제는 interrupt에 의해 구동된다
운영체제는 CPU를 사용할 일이 없고, interrupt가 들어올 때만 CPU가 운영체제에 넘어감. 평소에는 사용자가 사용.

- interrupt vector: interrupt의 처리 주소 가지고 있음
- interrupt service routine (ISR): interrupt 처리 커널 함수. 실제 interrupt 처리 코드

System Call

: 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수 호출.
사용자 프로그램이 운영체제 코드 직접 수행 불가. interrupt line setting -> cpu 제어권이 운영체제에 넘어감.

DMA(Direct Memory Access) Controller

: DMA와 CPU 둘 다 memory access 가능
CPU의 중재 없이 DMA controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송. (byte 단위 X, block 단위 전송 끝날 때마다 interrupt 발생)

CPU의 interrupt 감소. 빠른 I/O device 메모리에 가까운 속도로 처리. 효율적 사용.

Memory Controller

: DMA와 CPU의 memory 동시 접근 방지. 접근 조율.

입출력(I/O)

동기식 입출력(Synchronous I/O)

: I/O 요청 후 입출력 작업 완료 후에야 사용자 프로그램에 control이 넘어감

구현방법 1. I/O가 끝날 때까지 CPU 낭비시킴. 매 시점 하나의 I/O만 일어날 수 있음
구현방법 2. I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음. I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움. 다른 프로그램에게 CPU를 줌.

비동기식 입출력(Asynchronous I/O)

: I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 사용자 프로그램에 control이 넘어감

=> 두 경우 모두 I/O 완료는 interrupt로 알려줌

  • Memory Mapped I/O
    : memory 접근 주소 따로, I/O 접근 주소 따로가 아니라
    I/O 장치도 memory address의 연장 주소를 붙임.

저장장치 계층 구조


위로 갈수록: speed ⬆️ cost ⬆️ volatility ⬆️ capacity ⬇️

Caching: copying information into faster storage system

Program Execution

  1. File system에서 실행파일 A를 실행한다.
  2. A는 virtual memory에 있는 A의 address space에 접근한다.

    Address space
    - stack: dynamic allocation, stack data(local var...)
    - data: global data(static)
    - code: compile code

  3. A를 사용하려면 Address translation 과정을 통해 address를 physical memory에 저장한다.

    ex) A의 Address space에서 code가 0, data가 10, stack이 20의 address를 가지고, physical memory에서 A의 base address가 1000이라면, address translation의 결과는 10 + 1000 = 1010이다.
    !! Process의 address + base address => 이 address로 메모리 접근

  4. 당장 사용하는 process만 physical memory에 올리고 다른 건 swap area에 넣는다.
  • File system: nonvolatile
  • Swap area: volatile
  • Kernel address space
    - stack
    - data: 자료구조. PCB (Process Controller Block)
    - code: 시스템콜, interrupt 처리 코드. 자원 관리, 편리한 서비스 제공을 위한 코드
  • 사용자 프로그램이 사용하는 함수
    - 사용자 정의 함수: 사용자가 프로그램에서 정의한 함수
    ex) int findNum( )
    - 라이브러리 함수: 직접 정의 X. 실행 파일에 포함됨. 유저모드로 작동
    ex) strlen, strcmp
    - 커널 함수: 운영체제 프로그램의 함수. System call로 호출.
    ex) printf

운영체제 - 반효경
http://www.kocw.net/home/cview.do?cid=3646706b4347ef09

profile
Hello, World!

0개의 댓글