개발자 노트

[3-1,3-2] 고등운영체제, 인터럽트기반운영체제 본문

컴퓨터과학 기초/운영체제

[3-1,3-2] 고등운영체제, 인터럽트기반운영체제

jurogrammer 2020. 3. 19. 12:32

고등 운영체제(Multiprocessor system)

운영체제는 작동환경 및 목적에 따라 3가지로 나뉠 수 있다.

1.다중 프로세서 시스템(Multiprocessor system)

하나의 공유된 메인 메모리로 여러 cpu(프로세서)가 있는 형태. 멀티코어 프로세서와는 구분됨.(이는 프로세서1개에 코어가 4개일 수 있음. 4코어 8쓰레드 ex i7-3770)

이를 부르는 말로

병렬 시스템, 강결합시스템이 있고 performance, cost, reliability에서 이점을 보인다. 리눅스에서 지원해줌.

분산 시스템(distributed system)

다중 컴퓨터 시스템

소결합 시스템(다중 프로세서 시스템과 비교하여 소결합)

분산 운영체제의 도움을 받아야 한다.

  • LAN을 통하여 컴퓨터간 메세지를 주고받아야 한다. 그 메세지를 통해 상호작용함으로써 공통의 목적을 향해 데이터를 처리하는 기술이 필요함.

실시간 시스템(Real-time system)

시간 제약이 존재함.

공장자동화나 군사, 항공, 우주 등에서 쓰임.

  • 공장 자동화의 경우 A작업, B작업순서대로 진행될 경우 A작업이 정해진 시간에 일을 마무리 못했을 경우 B와 작업이 꼬이게 됨.

실시간 운영체제가 필요하다.(Real-time OS = RTOS)

  • 이 운영체제의 특징으로는 Deadline에 가까워진 프로세스에게 자원을 더 많이 할당하는 방식으로 일을 처리함.

인터럽트 기반 시스템

인터럽트

현대 운영체제는 인터럽트 기반 운영체제임.

부팅이 끝난 후 운영체제는 메모리에서 상주하며 사건을 기다린다.(사건 = 인터럽트) 즉, 인터럽트를 통해 운영체제가 일을하게 됨.

인터럽트의 종류엔 크게 3가지 종류가 있음.

인터럽트 종류

하드웨어 인터럽트(Hardware Interrupt)
  • 하드웨어에 의해 cpu가 인터럽트가 걸리고, os에 기록된 루틴을 수행한다.
소프트웨어 인터럽트(Software interrupt)
  • 프로세스가 입출력등을 원할 때 인터럽트를 걸어 OS가 해당 루틴을 처리해주도록 요구하는 것.
내부 인터럽트(internal interrupt, trap)
  • exception과 같은 것. cpu가 0을 나누는 작업과 같은 것을 수행할 때 스스로 이 작업을 할 수 없으니 cpu자체적으로 인터럽트를 걸어 운영체제의 도움을 받는 인터럽트를 말한다. (cpu가 결국 명령어를 처리하므로 인터럽트는 cpu를 향해서 하는 것. cpu가 cpu에게 인터럽트를 거니까 내부 인터럽트라고 말하는 것 같다.)

인터럽트를 하고 ISR이 실행되고 나선 원래 대기상태이거나 사용자 프로그램으로 복귀하여 명령어를 처리한다.

이중모드

한 컴퓨터에서 다중 프로그램(또는 다중 사용자)이 동작시, 한 프로세스의 동작이 다른 프로세스에게 크리티컬한 영향을 끼치지 못하도록 고안한 방법.

  • stop,reset등을 수행한다면 다른 프로세스는 동작하지 못하고 종료된다.

사용자 모드와 관리자 모드를 구분하도록 하였다.

  • 관리자모드 = 시스템 모드 = 모니터 모드 = 특권 모드(Supervisor,system,monitor,priviliged mode)

특권 명령의 종류는 다음과 같은 것들이 있다.

  • STOP,HALT,RESET,SET_TIMER,SET_HW...

이중모드는 mode bit을 나타내는 flag를 두어 1이면 관리자모드 0이면 사용자모드이도록 두었다. 그래서 운영체제 서비스를 실행 중일 땐 관리자 모드로, 사용자 프로그램이 실행 중일 땐 사용자 모드로 둠. 즉, 인터럽트 발생시엔 관리자 모드로 처리, 그 외는 사용자모드로 처리

일반적인 프로그램의 실행은 다음과 같다.

  • User mode -> 키보드,마우스 입력 -> system mode(ISR)출력 수행 -> user mode복귀 ->키보드마우스입력.... 루틴을 반복한다.

하드웨어 보호

이중 모드가 프로세스를 보호하기 위해 존재하는데, 그렇다면 하드웨어를 보호해야할 종류엔 무엇이 있을까?

입출력 장치 보호(I/O devicde protection)
  • A프로세스가 HDD에 저장한 파일을 B프로세스가 고의로 삭제하는 것을 방지 또는 프린터에 프로세스 A,B 동시에 출력 요청등을 보호하는 것이다.

  • 해결방안으로 입출력하기 위해서 OS의 도움을 받아 처리하는 것 OS는 이를 관리해주는 역할을 한다.

  • 이때 사용자 프로세스가 특권 명령을 직접 내리면 Privileged instruction viloation이라 부름.

메모리 보호(Memory protection)
  • B프로세스가 A프로세스의 메모리를 훔쳐보거나, 변경, 삭제할 수 있음.
  • 해결방안으로 cpu와 메모리 사이에 MMU(memory management unit)을 두어 침범 감시함. 물론 mmu설정은 운영체제만 변경할 수 있다.
CPU 보호(CPU protection)
  • 악의적인 while(1) 등으로부터 cpu를 보호하기 위한 것. 이로 특정 프로세스가 cpu자원을 독점할 수 있다.
  • 이를 위한 해결방안으로 timer라는 것을 두어 일정 시간 cpu를 가지고 있으면 인터럽트를 걸어 반환하도록 둠. 이때 OS로 cpu가 넘어가고 그 시간을 분석하여 해당 프로세스를 메모리로부터 쫓아낼 것인지도 결정함.

운영체제 서비스

운영체제는 결국 사용자프로그램과 하드웨어를 연결시켜주는 여러 Management의 집합이라 볼 수 있다. HDD 관리는 secondary device management가 관리하고 cpu scheduling은 cpu manament가, Mainmemory 관리는 Main memory management가 관리한다. 따라서 앞으로 운영체제를 배운다는 것은 해당 Management들을 배운다는 말과 동일하다. 운영체제 서비스의 종류

  • 프로세스 관리
  • 주기억장치 관리
  • 파일 관리
  • 보조기억장치 관리
  • 입출력 장치 관리
  • 네트워킹
  • 보호
  • 기타......

프로세스 관리

주요기능
  • 프로세스 생성,소멸(creation, deletion)
  • 프로세스 활동 일시 중지, 재개(suspend, resume)
  • 프로세스간 통신(interprocess communication)
  • 프로세스간 동기화(synchronization)
  • 교착상태 처리(deadlock handling)

주기억장치 관리

주요 기능
  • 프로세스에게 메모리 할당(allocation)
    • 자바에서 객체 생성시 new는 해당 객체를 생성할 메모리를 할당해달라!와 같다.
    • C에선 malloc이 있음.(memory allocation의 약자다)
  • 메모리의 어느 부분이 어떤 프로세스에게 할당되었는지 추적
  • 프로세스 종료시 메모리를 회수(deallocation)
  • 메모리를 효과적으로 사용하도록 함
  • 가상 메모리 이용

파일 관리

HDD는 물리적으로 Track과 Sector로 구분되어 있음. 하지만 우리는 파일이라는 논리적인 관점(가상의)으로 보고 있다. 이는 파일 매니지먼트의 도움을 받고 있기 때문임. (이러한 관점에서 DBMS 데이터베이스 매니지먼트는 하위의 구체적인 로직은 숨긴 채 SQL interface를 통해 DB를 관리할 수 있도록 도와주는 것이라 볼 수 있겠다.)

주요기능
  • 파일의 생성과 삭제(file creation & deletion)
  • 디렉토리(directory)의 생성과 삭제(윈도우에서는 폴더라 부름)
  • 기본동작지원 : open, close, read, write, create, delete
  • Track/sector - file 맵핑
  • 백업

보조기억장치 관리

주요기능
  • 빈 공간 관리(free space management)
  • 저장공간 할당(storage allocation)
  • 디스크 스케쥴링(disk scheduling)

입출력장치 관리

주요 기능
  • 장치 드라이브(Device drivers)
  • 입출력 장치 성능의 향상 :buffer, caching, spooling이용
    • spooling이란, 프린트 출력을 하기엔 cpu는 매우 빠르고 프린터는 느림 따라서 프린터가 데이터를 출력할 때까지 cpu가 기다려주기 보단, 그 중간속도인 HDD에 데이터를 임시저장하고 cpu는 자신의 할 일을 하는 것.

시스템 콜

사용자 프로그램이 운영체제의 도움을 받기 위해 인터럽트 거는 것을 시스템 콜이라고 한다. 즉, 특권 명령으로 수행해야하는 일을 할 때 운영체제에게 도와달라고 요청하는 것.

주요 시스템 콜
  • Process : end, abort, load, excute, create, terminate, get/set attributes, wait event, signal event
  • Memory : allocate, free
  • File:create, delete, open, close, read, write, get/set arrtibutes
  • Device: requests, release, read, write, get/set attrivutes, attach/detache devices
  • Information:get/set time, get/set system dta
  • Communication: socket, send, receive
반응형
Comments