반효경_운영체제3

네코·2023년 1월 23일
0

운영체제

목록 보기
6/6

3-1. 시스템 구조와 프로그램 실행

컴퓨터 시스템 구조

컴퓨터 시스템:
cpu 와 메모리를 갖는 기기를 의미한다.
더불어 I/O 디바이스들을 포함한다.

메모리란?
cpu의 작업 공간을 의미한다. cpu 는 매 clock 마다 메모리에서 기계어를 읽어서 작업을 한다.

device controller
IO디바이스의 작업 제어(내부 통제)는 각 device controller가 담당한다.
각 device controller들도 작업 공간이 필요하다.그 공간을 local buffer라고 한다.
제어 정보를 위해 control register, status register가 존재
io가 끝났을 경우 인터럽트로 cpu에 알린다.

cpu

  • register : 빠르면서 정보를 저장하는 작은 공간
  • mode bit
    • cpu 내부 수행 중인 것이 운영체제인지 사용자 프로그램인지 구분해주는 것
    • 0이면 커널 모드, 1이면 유저 모드
    • 커널 모드인 경우 메모리접근, io디바이스 접근 명령어 등 모두 수행 가능하다
      그러나 유저 모드인 경우 제한된 명령어(instruction)만 수행 가능하다
      interrupt line

timer
특정 프로그램이 cpu를 독점하는 것을 방지하는 목적
정해진 시간이 모두 흐르면 인터럽틀르 발생시켜 운영체제로 제어권이 넘어갈 수 있도록 한다.

DMA controller(direct memory access controller)
메모리에 접근할 수 있는 것은 cpu뿐. 따라서 여러 io device의 작업 후 메모리에 작업 결과를 두기 위해선 cpu를 통해야하고 cpu는 인터럽트를 계속 받게 된다.
이렇게 잦은 인터럽트 처리는 cpu를 효율적으로 사용하지 못하게 된다.
dma controller를 두어 io device에서 직접 메모리 전송하여 cpu가 본인의 역할에 보다 집중할 수 있도록 한다.
=> interrupt 빈도 감소

사용자 프로그램은 직접 io 호출을 할 수 없다
어떻게 하는가?
1. 시스템콜을 이용
=> 사용자 프로그램을 실행 중인 상황에는 mode bit가 1. 따라서 io명령을 실행할 수 가 없음
사용자 프로그램 내에 시스템콜 함수를 호출하면 해당 함수에서 interrupt를 발생시켜 mode bit를 0으로 바꾸고 원하는 io 작업을 할 수 있게 되는 것

interrupt
인터럽트 당한 시점의 레지스터와 프로그램 카운터를 저장한 후 cpu 제어를 인터럽트 루틴에 넘긴다

인터럽트는 하드웨어에 의한 인터럽트를 말하며 소프트웨어에 의한 인터럽트는 trap이라고 한다.
트랩에는 2종류가 있는데 exception과 system call이다.

인터럽트 벡터
인터럽트가 실행될 함수의 주소를 정의해둔 테이블
인터럽트 처리 루틴
인터럽트의 실제 처리 코드 (처리 함수)

동기식/비동기식 입출력

sync: 시간적으로 맞추는 개념
구현 방법은 2가지로 설명한다
1. IO가 끝날때까지 해당 프로세스가 cpu를 물고 있도록 한다.
cpu 낭비는 물론 IO 낭비가 발생한다.
2. IO가 처리될 때까지 해당 프로세스로 부터 cpu를 뺐는다.
io waiting queue에 프로세스를 줄세우고 타 프로세스에 제어를 넘기고
interrupt 발생 시 다시 해당 프로세스에 cpu를 넘긴다.

async: io 작업이 끝나는 것을 기다리지 않고 사용자 프로그램에 즉시 제어권이 넘어간다.

저장장치 계층 구조

레지스터
캐시
메인메모리(dram)

=> cpu접근이 가능하려면 byte단위로 접근이 가능해야함.

하드디스크(flashmem)

프로그램 실행

파일 시스템에 저장된 실행 파일을 메모리에 올려 프로세스로 실행한다. 이 떄 각 프로세스는 가상 메모리 공간을 할당받는다. 가상 메모리 공간에는 code, data, stack영역 등이 존재.
그 후 실제 실행되는 부분만 physical memory에 올리고 나머지는 swap area에 저장하는 형태.
이 때 virtual memory=> physical memory로 address translation 발생.

커널도 하나의 프로그램으로 code data stack 공간을 할당 받음
자원을 효율적으로 관리하는 코드,
인터페이스 제공의 코드
인터럽트 처리 코드 가 존재한다.
사용자 프로그램마다 커널 스택에 따로 존재

0개의 댓글