[운영체제] 운영체제 소개

조민서·2021년 12월 28일
2

운영체제

목록 보기
1/10
post-thumbnail

운영체제 분류

동시 작업 가능 여부

  • 단일 작업: 한 번에 하나의 작업만 처리
  • 다중 작업: 동시에 두 개 이상의 작업처리

사용자 수 (동시접근 가능여부)

  • 단일 사용자
  • 다중 사용자

처리 방식

  • 일괄 처리: 작업을 모아서 한꺼번에 처리하는 시스템, Non interactive
    ex) 초기 punch card 처리 시스템
  • 시분할(time sharing): 여러작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할 하여 작업, interactive, 특정한 데드라인이 없다.
  • 실시간(real time os): 정해진 시간안에 어떤 일이 반드시 종료됨이 보장 되어야 한다. 특정한 데드라인이 있다. ex) 미사일 제어, 원자로 공장 제어
    참고

운영체제 (컴퓨터 시스템) 구조

CPU

프로그램 A가 있고, 프로그램 B가 있으면 처음에 OS는 CPU제어권을 프로그램 A에게 주고 A프로그램 실행 도중에 I/O devices controller에서 인터럽트가 발생하면 CPU제어권이 다시 OS로 넘어오고 OS는 CPU제어권을 I/O device에게 전달한다.

=> CPU에 인터럽트가 너무 많이 걸리기 때문에 CPU의 일이 많아져 비효율적

해결방안: DMA(Direct Memoery Access)

CPU의 개입 없이 디바이스 컨트롤러와 메모리가 직접
데이터 블록을 전송할 수 있도록 하는 장치
바이트 단위가 아닌 데이터 블록 전체에 대해 인터럽트 처리

타이머

타이머: 지정된 시간 후 컴퓨터를 인터럽트 하도록 설정할 수 있는 하드웨어
특정 프로세스가 CPU를 독점하지 못하도록 방지

  • 프로그램 시간 초과시: 프로그램에서 OS로 CPU 제어권이 넘어온다.
  • 프로그램 종료시: CPU 제어권이 OS로 자동반환

CPU는 instruction을 처리하기만 한다.


I/O Devices

I/O devices는 각각의 device controller가 있다.
ex) 디스크 컨트롤러, 마우스 컨트롤러, 프린트 컨트롤러, 모니터 컨트롤러

I/O deviecs는 프로그램에 직접 접근할 수 없다. (OS가 각각의 디바이스 컨트롤러에게 CPU 제어권을 줘서 접근한다.)
ex) 타자를 치면 I/O 컨트롤러는 CPU에게 요청해서 CPU 제어권이 OS를 통해 I/O 디바이스에게 온다.

버퍼링(Buffering)

개념 : 한 작업의 계산과 함께 입/출력을 동시에 수행하는 방법

  • 입력 버퍼링 : 프로세스가 데이터를 요구하기 전에 입력장치가 데이터를 주기억장치에 복사

  • 출력 버퍼링 : 데이터를 주기억장치에 저장하고 프로세스가 실행을 계속하는 동안에 장치에 데이터를 기록. 데이터를 입력한 후, CPU가 이를 연산하려고 하는 순간 CPU와 입력 장치는 동시에 동작되며, 양쪽의 속도가 비슷하다면 버퍼 이용이 효율적.

버퍼를 사용하는 이유

CPU가 문자나 데이터를 하나씩 연속적으로 읽을 때 마다 채널에게 SIO(Start I/O) 명령을 행한다면 매우 복잡하고 많은 작업량이 필요. 따라서 버퍼를 사용하여 문자나 데이터를 미리 읽어온 후, 필요할 때 마다 사용하면 효율적이다. 느릴수록 효과적 이다.


용어

  • multi-tasking: 최초의 컴퓨터는 한 번에 하나의 작업만을 처리할 수 있었다. 어떤 프로그램을 실행하고 있을 때 다른 프로그램을 실행하려면 실행 중인 프로그램의 작업이 끝나야 다른 작업을 수행할 수 있는 블로킹 방식이었기 때문. 채팅 프로그램으로 비유하면 무전기처럼 채팅해야 하는 셈. 프로세서와 운영체제 기술이 발달하면서 한 번에 여러가지 작업을 처리할 수 있게 되었다
    커널 내부에서는 운영체제가 각각의 프로그램에 CPU 사용권을 적절히 분배하는 작업이 반복되고 있다. 하드웨어 자원은 한정되어 있는데 멀티태스킹을 위해 더 많은 작업을 바쁘게 수행해야 하므로 어느 특정 프로그램 하나가 실행할 때 다른 여러 프로그램들과 함께 실행할 때가 실행하지 않을 때보다 더 느릴 수밖에 없지만, 블락킹 상태를 자주 보면서 작업하는 것보단 훨씬 나은 UX를 제공할 수 있기 때문에 멀티태스킹이 정착하게 된 것이다. 보다 효율적인 멀티태스킹이 되기 위해서는 프로세스들을 적절히 분배하는 작업이 이루어져야 하는데 이러한 작업을 프로세스 스케줄링 (CPU 스케줄링) 이라고 한다.

  • multi-programming: 여러작업을 수행할 때 단일 프로세서 상에서 여러작업이 동시에 실행되는 것이다. => 메모리에 여러 프로그램을 올린다. (멀티 태스킹과 비슷한 개념이지만 멀티 태스킹에 비해 메모리 측면을 강조)

  • time sharing (시분할): 여러작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할 하여 작업 => 멀티 태스킹과 비슷한 개념이지만 멀티 태스킹에 비해 CPU측면을 강조

  • multi-processor: 하나의 컴퓨터에 CPU(processor)가 여러개 붙어 있음을 의미한다.
    ex) 멀티 코어

  • multi-process: 멀티프로세스란 2개 이상의 프로세스가 동시에 실행되는 것을 말합니다. 프로세스 간에 Code, Data, Heap, Stack 영역 모두 서로 공유하지 않습니다.

  • mulit-thred: 멀티스레드란 2개 이상의 스레드가 동시에 실행되는 것을 말합니다. 프로세스의 Code, Data, Heap 영역을 공유하지만 Stack영역은 공유하지 않습니다.

profile
내 두뇌는 휘발성 메모리다. 😪

0개의 댓글