CS/운영체제

Chapter 1,2: OS와 인터럽트

GaeunLee 2022. 3. 28. 14:54

1.1 OS란

  • 컴퓨터의 여러 응용프로그램 설치
  • 여러 장치 효율적으로 작동
  • 사용자가 컴퓨터를 손쉽게 이용할 수 있게 해줌
  • 사용자 인터페이스, 자원 관리를 위한 프로그램의 집합

 

1.2 OS 역사

  1. 1세대 운영체제
    • 일괄 처리 시스템 (Single-Stream Batch Processing System)
      • 다수개의 프로그램을 읽어 저장, 한 번에 한 개씩의 프로그램을 실행
      • 한꺼번에 여러 개 준비시켜, 다음 작업을 자연스럽게 연결해 실행
      • 작업이 끝날 때까지 사용자의 중간개입 허용되지 않음
    • 배치
      • 한 개의 작업이 시작되면 그 일이 완전히 끝날때까지 다른 작업은 기다려야 함
  2. 2세대 운영체제
    • 다중 프로그래밍 시스템
      • 다수의 작업이 같이 주기억장치에 넣어서, CPU가 바로 다음작업을 하도록 함
    • 다중처리 시스템
      • 여러 개의 처리장치(Processor(CPU))로 동시에 여러 작업을 병렬 실행
    • 시분할 시스템
      • CPU가 처리해 줄 수 있는 시간을 작업 수에 맞춰 분할 후,
      • 일정량을 분배해서 번갈아 처리
      • 다중 프로그래밍 시스템이 내장되어 있어야함
    • 대화식 시스템
      • 모니터와 입력장치를 이용해 대화하듯이 일을 처리하는 방식
  3. 3세대 운영체제
    • 다중모드 시분할 시스템
    • UNIX 출현
  4. 4세대 운영체제
    • 마이크로프로세서의 개발(개인용 컴퓨터의 보급)

 

1.3 OS

  • 운영체제의 5가지 구성 요소
    • 쉘(사용자 or 응용프로그램 <=> 운영체제 의사소통) => 장치, 파일, 메모리, 처리기 관리
      • 장치 = 키보드 모니터 하드디스크
      • 파일 = 디렉터리(폴더) 파일 생성 삭제
      • 메모리 = 주기억장치 할당, 경계 설정
      • 처리기 = CPU 처리 능력 효율적으로 배분
  • OS의 위치
    • 커널 = 메모리 상주 프로그램(memory resident program), 핵, 관리자(supervisor)
    • 빈번하고 빠르게 실행해야 하는 프로그램
    • 유틸리티 프로그램 = 주로 사용자 인터페이스(ex. COMMAND)
  • 듀얼모드
    • 유저모드
    • 커널모드
    • 유저 모드로 실행 중 커널 모드에서 해야 할 일이 생기면 프로그램은 시스템 호출을 하게 되고 이후 그 일을 해줄 운영체제 프로그램이 커널 모드에서 실행된 다음 다시 사용자 프로그램으로 복귀

 

2.1 OS의 목적

  • 사용자의 편리성
  • 자원의 효율적인 사용

(+) 설계 유지 보수가 쉽고 적응성이 좋으며 오류 없이 효율적이면 좋다.

 

2.2 몇 가지 상식

  • 부팅
    • 부트 프로그램 or 부츠트랩 로더(Bootstrap Loader) 사용
      • 커널을 찾아 메모리에 올린 후 실행시켜주는 역할
    부츠트랩 로더가 부트 프로그램을 메모리에 올리고 부트프로그램이 커널을 올려 실행

 

  • 레지스터: 메모리보다 빠른 기억장치
    • 데이터 레지스터(연산)/ 주소 레지스터(주소 저장)/ 조건코드 레지스터 등..
    • MBR, MAR, IR, PC
    • PSW(Program Status Word) 프로그램 상태 워드: CPU 현재 상태정보 저장
      • 조건코드(condition) 비트
      • 인터럽트(가능, 불가능) 비트
      • 현재 실행 모드 비트

 

2.3 인터럽트

폴링 & 인터럽트

  • 폴링: CPU가 자원들의 상태를 주기적으로 확인하는 방식
    • 단점: 폴링의 간격을 적절히 정해야 함, 상태변화가 없어도 일정량의 시간
  • 인터럽트: 자원들이 능동적으로 자신의 상태변화를 CPU에 알림
    • 장점: 상황 발생 시 즉각적으로 알림!

 

하드웨어 인터럽트 & 소프트웨어 인터럽트

  • 하드웨어 인터럽트
    • 하드웨어 자원 ⇒ CPU
    • → (장치(devices), 주변장치(peripherals))

 

  • 소프트웨어 인터럽트
    • CPU ⇒ CPU
    • ex. (트랩(Trap)=0으로 나누기), (시스템 콜)
  •  

 

인터럽트 처리

  • 명령어 완료 후 처리
  • CPU에 있는 레지스터 값(현 상태)을 시스템 스택에 저장하고 시작

 

문맥 교환

  • 현재 상태(하고있던 일)을 다른 곳에 보관 후 잠시 다른 일을 CPU로 진행하도록 함
  • 문맥 = CPU가 하고있던 일의 상태 = 상태 정보를 포함한 처리기 레지스터의 값

 

 

2.4 기억 장치의 계층적 구조

 

2.5 I/O 방식

프로그램에 의한 입출력

  • CPU가 계속해서 컨트롤러의 버퍼에 입력을 확인 하는 방식
  • 지속적으로 완료 여부 확인
  • I/O가 완료될 때 까지 CPU낭비

 

인터럽트에 의한 입출력 (대부분의 방식)

  • I/O완료 시 인터럽트를 통해 CPU에 알려지는 방식
  • CPU낭비를 없앤다!!
  • 단, 대량의 I/O system (ex. 은행) 에는 느려진다. (I/O 크고, 버퍼 작을 때 불리)

 

메모리에 직접 접근하는 입출력(DMA)

  • 인터럽트에 의한 입출력의 일종이다
  • 잦은 인터럽트 처리를 줄이기 위해 입출력 작업을 대신 해주는 채널 사용
  • 채널(입출력 처리장치)
  • 버퍼 대신 블록(버퍼보다 큼)을 사용 ⇒ I/O 부담 줄여준다
  • 보조하드웨어 사용

 

독립적인 입출력

  • 입출력 버스를 이용해 CPU에 연결
  • 메모리는 따로 메모리 버스를 통해 연결

 

메모리 주소지정 입출력

  • 입출력장치가 메모리와 함께 메모리 버스에 연결
  • 각각 메모리의 한 번지를 할당받아서 사용(명령어)
  •  

'CS > 운영체제' 카테고리의 다른 글

Chapter 7: 메모리 관리  (0) 2022.05.09
Chapter 6: 교착 상태(Dead Lock)  (0) 2022.05.05
Chapter 5: 병행 프로세스와 동기화  (0) 2022.05.03
Chapter 4: CPU 스케줄링  (0) 2022.04.04
Chapter 3: 프로세스와 스레드  (0) 2022.03.29