본문 바로가기
Study/운영체제

 [운영체제] 3. System Structure & Program Execution 1 필기

by 코딩삐약 2021. 3. 15.
  • 컴퓨터 시스템의 하드웨어 구조

  • CPU Memory 구성된 컴퓨터
  • I/O device (input/output)
  • 인풋은 데이터를 컴퓨터로 입력
  • 결과로 디바이스로 내보내는 것을 아웃풋
  • Memory라는 것은 CPU 작업공간
  • Instruction 기계어를 실행
  • CPU 순간 메모리에서 기계어를 하나씩 읽어서 실행
  • I/O device 별개의 디바이스들
  • 키보드, 마우스는 인풋 디바이스
  • 프린터, 모니터는 아웃풋 디바이스
  • 하드디스크는 보조기억장치로 보통 얘기하지만 I/O device 보기도 . 인풋 - 디스크에 데이터를 메모리로 읽어들임/ 아웃풋 - 파일을 디스크에 저장하기도

 

  • device controller : 디바이스를 전담하는 작은 cpu같은 역할을 한다
  • CPU 메모리와 같이 필요한 device controller 작업공간은 local buffer이다
  • CPU 메모리에서 instruction 하나씩 읽어서 실행하는 역할을
  • CPU안에 메모리보다 빠르면서 정보를 저장할 있는 작은 공간 registers
  • CPU 가진 운영체제인지 사용자 프로그램인지 구분해 주는 프로그램 mode bit
  • Interrupt line : 다른 장치가 일이 끝났는지 알려줌
  • CPU 오직 메모리에 있는 instruction 읽어
  • CPU에서 Disk 있는 정보가 필요할 disk controller 통해 시켜 놓고 (오래 걸리기 때문에 ) 빠른 CPU 메모리접근으로 계속 instruction 실행함
  • Timer : 특정 프로그램이 CPU 독점하는 것을 막는 역할
  • 각각 정해 놓은 시간마다 CPU 분할 사용한다
  • Interrupt 들어온 있는지 체크
  • 프로그램에서 바로 I/O 디바이스로 접근할 없어 운영체제를 통해서만 가능
  • Interrupt 걸리면 자동으로 운영체제에 CPU 할당해서 때문인지 확인
  • Mode bit - 사용자 프로그램의 잘못된 수행으로 인해 다른 프로그램 운영체제에  피해가 가지 않도록 하는 보호 장치
  • 0 운영체제가 CPU에서 실행 중일 무슨 일이든 있다. 메모리접근 뿐만 아니라 I/O device 접근 가능
  • 1 사용자 프로그램이 CPU 가지고 있을 제한된 instruction 실행 가능 (보안 상의 이유로)
  • 보안을 해칠 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 '특권 명령'으로 규정
  • Interrupt Exception 발생시 하드웨어가 mode bit 0으로 바꿈
  • 사용자 프로그램에게 CPU 넘기기 전에 mode bit 1 셋팅
    • 모니터 모드 (= 커널 모드, 시스템 모드)

 

 

  • Timer - 정해진 시간이 흐른 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴

 

  • Device Controller
  • 해당 I/O 장치유형을 관리하는 일종의 작은 CPU
  • 제어 정보를 위해 control register, status register 가짐 (실제 지시를 받음)
  • 실제 데이터를 저장하는 local buffer 가짐

 

  • Interrupt 너무 많으면 비효율적 -> DMA controller
  • 역할은 모든 I/O디바이스의 일이 끝나면 모아서 알려줌
  • 원래는 CPU 메모리에 접근, but DMA 접근할 있도록
  • 메모리 컨트롤러는 같은 메모리를 같이 쓰게 되는 상황을 조율하는 역할

 

  • Device driver(장치 구동기)

: OS코드 장치 처리 루틴 -> software

  • Device controller (장치 제어기)

: 장치를 통제하는 일종의 작은 CPU -> hardware

 

CPU 숙명은 이번에 실행해야 instruction 중에서 registers에서 찾아 실행

CPU Memory 지시를 받아 일을 한다

Device driver 장치를 수행하기 위해 필요한 코드를 담고있다

 

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

 

  • 사용자 프로그램에서 I/O 사용하기 위해서 바로 운영체제에 요청 못함 (mode bit 1 상태이기 때문에 접근 x)
  • 따라서 프로그램에서 직접 interrupt line 설정해 CPU instruction 실행 interrupt 들어온 확인하는데 그때 들어온 interrupt 확인하면 mode bit 0으로 바꿔 운영체제에 할당
  • I/O요청을 확인해 운영체제가 disk controller 데이터를 읽어오라고 요청할 있게
  • I/O 디바이스들이 CPU 있거나 프로그램이 운영체제를 통해 요청해 있다
  • 운영체제가 시킨 일이 끝나면 I/O 컨트롤러가 인터럽트를 건다 -> 하드웨어 인터럽트
  • 전자를 소프트웨어 인터럽트 다른 말로 trap / 일반적으로 하드웨어 인터럽트

 

 

  • 현대의 운영체제는 인터럽트에 의해 구동됨
  • 운영체제는 인터럽트가 들어왔을 때만 CPU 사용
  • 시스템콜
  • 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는

 

  • 각각의 인터럽트가 어떤 일을 해야 하는지 - 인터럽트 처리 루틴
  • 어떤 처리로 가야할 표시해주는 - 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음