System Structure & Program Execution 1️⃣

uuuu.jini·2023년 4월 2일
0

OperatingSystemLecture

목록 보기
2/4
post-thumbnail

컴퓨터 시스템에서 하드웨어가 어떻게 동작하는지, 프로그램들이 이러한 하드웨어 위에서 어떻게 돌아가는지!

✅ 컴퓨터 시스템 구조


  • 컴퓨터: CPU와 메모리
  • I/O (Input/Output) device
    • Input: 장치의 데이터가 컴퓨터 안으로 들어감 (키보드)
    • Output: 결과를 장치로 내보내는 것 (프린터, 모니터)
    • 보조기억장치: 하드디스크 (I/O 장치로도 본다. 안의 데이터를 읽어서 넣는 Input과 처리결과를 파일시스템에 저장하는 output)

  • 메모리: CPU의 작업 공간
  • CPU는 기계어를 하나씩 읽어서 실행한다.
  • device controller: 각 장치에 하나씩 붙어있다. 장치를 통제한다.
    • 개별 저장공간을 가진다. ⇒ local buffer
  • CPU와 I/O 장치는 처리 속도가 굉장히 차이난다. ⇒ CPU가 직접 관장하지 않고 디바이스 컨트롤러가 담당하도록 한다. CPU는 매 clock마다 메모리에서 instruction 을하나씩 읽어 실행한 후 다음 Instruction 을 읽어서 실행한다.
  • CPU안에는 메모리보다 빠르면서 정보를 저장할 수 있는 작은 공간이 있다. ⇒ 레지스터
  • CPU안의 mode bit: CPU에서 실행되는 것이 OS인지 사용자 프로그램인지를 구별해 준다. (커널 vs 유저)
  • Interrupt line: cpu는 항상 메모리에 있는 instruction만 실행한다. ⇒ instruction 하나 수행 시 다음번에 수행할 기계어의 주소값이 증가한다. ⇒ 다음 사이클에서는 다음 instruction 을 수행한다. ⇒ 키보드 입력, 디스크 입력, 디스크 출력 등 I/O Interrupt 발생 시 ⇒ 해당 interrupt를 전달하는 역할을 한다. (CPU는 메모리와만 일을 한다.)
    • CPU는 I/O device를 바로 접근하지 않고 instruction 메모리만 접근한다.
    • disk 에 읽어오라는 요청은 직접 디스크 접근이 아닌 디스크 컨트롤러에게 읽어오라는 일을 시킨다. ⇒ disk controller가 해당 데이터를 읽어온다. ⇒ 자신의 로컬 버퍼에 저장한다. ⇒ (CPU는 다른 일을 수행하고 있다.) ⇒ 다 읽으면 CPU에게 interrupt 발생

문제

  • 무한루프를 발생시키는 프로그램 ⇒ CPU가 한번 넘어가면 프로그램 종료하지 않고 독점 ⇒ timer라는 하드웨어로 해결한다.
  • 역할: 특정 프로그램이 cpu를 독점하는 것을 막는다.
  • OS가 cpu를 가지고 있다가. 사용자 프로그램에게 timer의 값을 세팅한 후 cpu를 넘겨주며, 해당 시간에 의해 cpu를 놓아야 한다. (독점 방지)
  • timer로 세팅된 시간을 넘기는 경우 interrupt를 발생시킨다.
  • timer가 interrupt 발생 시 CPU의 제어권이 운영체제에게 넘어간다.
  • 운영체제가 CPU를 얻게 되는 경우 다음 프로그램에게 timer를 세팅한 후 CPU를 넘겨준다. ⇒ 해당 프로그램도 동일하게 동작한다.
  • 프로그램이 I/O를 해야 하는 경우 프로그램이 자진해서 OS로 CPU를 넘겨준다. (사용자 프로그램은 직접 I/O를 할 수 없다. 작업이 필요한 경우 ⇒ 스스로 운영체제에게 CPU를 넘겨주고 해당 작업을 I/O 컨트롤러에게 시킨 후 운영체제는 다른 프로그램에게 CPU를 넘긴다. )
    • I/O 컨트롤러가 자신의 작업이 끝났다고 interrupt를 하는 경우 CPU제어권이 OS로 넘어가고 해당 i/o를 요청한 프로그램에게 해당 데이터를 적어준다. )

✅ Mode bit


  • mode bit이 0인 경우 모든 작업을 수행할 수 있지만, 1인 경우 제한된 instruction만 cpu에서 실행할 수 있다. ⇒ 보안상의 이유 (예-I/O작업)
  • 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요
  • Mode bit을 통해 하드웨어 적으로 두 가지 모드의 operation 지원
    • 0: 모니터 모드, 커널 모드 (운영체제가 CPU에서 실행중임)
    • 1: 사용자 모드(CPU가 사용자 프로그램을 실행중임)

✅ Timer


특정 프로그램이 CPU 독점을 막기 위해 특정 시간을 할당한 후에 CPU를 넘겨준다. 해당 timer가 다 된 경우 해당 프로그램으로부터 CPU를 뺏을 수 있게 구현되어있다.

✅ Device Controller


I/O 장치를 관리하는 일종의 작은 CPU이다.

  • 로컬 버퍼, 레지스터를 가진다.
  • device driver (장치구동기) : OS 코드 중 각 장치별 처리 루틴 → software
  • device controller(장치제어기) : 각 장치를 통제하는 일종의 작은 CPU → hardward

DMA 컨트롤러

  • 메모리를 CPU와 함께 접근한다.
  • 입출력 장치와의 interrupt로 인해 CPU의 작업이 방해받지 않기 위해 사용한다.
  • I/O 작업을 종료시 CPU의 작업을 종료시키고 메모리에 적기에는 오버헤드가 크므로 DMA가 직접 메모리로 복사해서 interrupt를 발생시킨다. ⇒ CPU의 interrupt의 횟수를 줄인다.

✅ 입출력의 수행


  • 모든 입출력 명령은 특권 명령
  • 사용자 프로그램은 OS를 통해서만 입출력에 접근이 가능하다.

시스템 콜

  • 사용자 프로그램이 운영체제에게 I/O를 요청한다.
  • trap을 사용하여 인터럽트 벡터의 특정 위치로 이동
  • 제어권이 인터럽트 벡터가 가리키는 인터럽트 서비스 루틴으로 이동
  • 올바른 요청인지 확인 후 수행
  • 입출력 완료 시 제어권을 시스템콜 다음 명령으로 옮김

✅ 인터럽트


  • 넓은 의미
    • 하드웨어 인터럽트 : 하드웨어 발생
    • Trap (소프트웨어 인터럽트)
  • 현대의 운영체제는 인터럽트에 의해 구동됨
  • 시스템콜을 이용하여 프로그램이 입출력을 요청 ⇒ 입출력 종료시 하드웨어 인터럽트를 통해 끝난 것을 알려줌
  • 인터럽트 벡터: 해당 인터럽트의 처리 루틴 주소를 가지고 있음
  • 인터럽트 처리 루틴: 인터럽트 핸들러, 해당 인터럽트를 처리하는 커널 함수
profile
멋쟁이 토마토

0개의 댓글