[OS] 운영체제 소개(2)

sky·2022년 4월 14일
0

정리

목록 보기
6/13
post-thumbnail

(1) 운영체제에 대한 관점

1. 자원 관리자 관점의 OS

  • OS는 자원이 효율적으로 사용되도록 하는 관리 책임이 있다.
  • 프로세스 간에 발생할 수 있는 자원에 대한 경쟁 및 충돌을 해결한다.
    • 자원의 상태를 추적하고, 어떤 프로세스가 언제 어떤 자원을 얼마나 사용할 것인지를 결정하는 정책을 수립하고 자원의 할당과 회수를 한다.

운영체제가 관리하는 네 가지 범주의 자원

  1. 프로세스 관리 기능(프로세서의 할당과 회수)
    • 프로세스들에 대한 CPU의 할당 및 회수를 한다.
    • Process Scheduler 역할 : 어떤 프로세스에게 CPU 사용 권한을 줄 것인지를 결정한다.
  2. 기억장치 관리 기능(메모리 공간 관리)
    • 프로세스 할당과 회수를 위한 주기억장치(Main Memory)공간 관리를 한다.
    • 다중 프로그래밍 환경에서 프로세스들에 대한 주기억장치 할당 방법을 결정한다.
  3. 입출력장치 관리 기능
    • I/O Scheduling : 어떤 프로세스에게 입출력 자원을 할당할 것인지를 결정한다.
    • 입출력 채널이 입출력을 수행하도록 OS가 지시한다.
      • CPU는 입출력 제어를 하지만 직접 관여하지 않는다. (idel state가 된다.)
  4. 파일시스템(정보 자원) 관리 기능
    • 파일시스템 사용 여부 및 상태를 추적한다.
    • 어떤 프로세스가 파일시스템을 사용할 것인지를 결정한다.

2. 프로세스 관리자 관점의 OS

  • 컴퓨터 시스템은 한 개의 OS와 다수 개의 프로세스로 구성된다.
  • OS는 한 시점에는 하나의 프로세스가 수행되도록 관리한다. (cpu가 처리할 수 있는 프로세스가 한 개)
  • 수행되지 않고 있는 다른 프로세스들은 메모리에 저장되어 대기하고 있다.(부팅 시에 메인 메모리에 OS가 올라가 있는데, 안 올라가면 부팅이 되질 않는다.)
운영체제
프로세스1
프로세스2
프로세스2

위의 그림은 메모리에 저장되어 있는 프로세스들인데 프로세스1이 CPU에 할당이 되어서 나머지 프로세스들은 대기중이다. (다중 프로그래밍 시스템에서의 복수 프로세스)


3. 계층 구조 관점의 운영체제

  • OS를 기계(H/W)의 확장으로 본다.
  1. 내부적 확장기계(*커널)
    • Level 1 : 프로세스 관리 하위모듈(동기화 프리미티브, 프로세스 스케줄러)
    • Level 2 : 기억장치 관리(메모리 할당/회수)
    • Level 3 : 프로세스 관리 상위모듈(메시지, 프로세스 생성 및 제거)
  2. 외부적 확장기계
    • Level 4 : 입출력 장치관리(I/O Traffic Controller)
    • Level 5: 정보관리(파일 시스템)
*커널 : OS의 기본 기능을 실행하는 부분

(2) 입출력 프로그래밍

  • 컴퓨터 시스템 구성 : CPU, I/O장치, Main Memory, *보조기억장치
    • 입출력장치와 같은 기계 장치들은 발전 속도가 상대적으로 느리다.
    • 입출력장치에 대한 CPU 및 주기억장치의 긴 대기 문제가 발생한다.
  • 대부분의 컴퓨터에서 입출력장치와 CPU는 비동기적(Asynchronous)으로 수행된다.(대기 문제가 발생하기 때문에 프로세스 처리속도 향상을 목적으로 함)
    • CPU와 입출력장치에 대한 작동이 서로 독립적이며 수행상의 시간관계 규정이 없이 병행적으로 수행한다.

Buffering (Asynchronous 수행의 한 방법)

  • 입출력장치는 기계적인 속도로 수행되어 CPU대비 매우 느린 속도로 작동한다.
  • 입출력장치의 느린 속도를 보완하기 위한 기법으로 주기억장치에 입/출력해야 할 데이터를 메인 메모리에 미리 채우는(만들어 두는) 방법이다.

1. CPU는 출력할 데이터를 버퍼(메모리)에 채운다.
2. 버퍼가 채워지면 CPU는 입출력 채널에 출력을 지시하고, CPU는 자신의 일을 계속 진행한다.(병행 처리)
3. 입출력 채널은 버퍼에 있는 데이터를 프린터로 출력을 수행한다.
4. 입출력 채널이 출력을 완료하면 CPU에게 완료 정보를 보낸다.


이중 Buffering (출력속도 향상 목적)

1. CPU가 버퍼 A를 채운다.
2. 버퍼가 채워지면 CPU는 입출력 채널에게 출력을 지시한다.
3. 버퍼 A의 출력과 독립적으로 CPU는 버퍼 B를 채운다.(병행 처리)
4. 입출력 채널은 버퍼 A를 출력하고 비운다.
5. 입출력 채널이 버퍼 A의 출력을 완료하면 CPU에게 알린다,
6. 입출력 채널은 버퍼 B를 출력하고, CPU는 다시 버퍼 A를 채운다.(병행 처리)


Spooling(Simultaneous Peripheral Operation Online)

  • 메모리(주기억장치)가 아니라, 디스크를 큰 버퍼로 사용한다.
    • 버퍼링과 유사하나 프린터에만 적용하는 것과, 주기억장치가 아닌 하드 디스크에 저장한다는 것에서 차이가 있다.
  • 대부분의 프린터 등의 입출력 장치들은 스풀링 기능을 적용하고 있다.


Channel = I/O Channel

  • 입출력 장치와 CPU 사이의 입출력 전담 처리기로 모든 입출력은 채널을 통하여 수행된다.
  • CPU는 입출력이 실제로 수행 완료될 때까지 기다릴 필요 없이 계속해서 다른 연산을 수행할 수 있다.(CPU와 입출력 채널이 독립적으로 수행)

1. CPU가 채널의 현재 상태(현재 사용되고 있는지)를 점검한다.
2. 채널의 상태가 양호하면 채널로 하여금 입출력을 수행하도록 한다.
3. 채널이 입출력을 완료하면, CPU에게 *인터럽트를 통하여 알린다.
4. CPU는 해당 채널의 (입출력)인터럽트를 인지하고 다음 수행을 지시한다.

*Interrupt : 비동기적 수행에서 반드시 필요한 것으로, 컴퓨터 시스템에 예기치 않은 상황 또는 작업의 종료 상황이 발생했을 때 그것을 OS에게 알리기 위한 메커니즘

Interrupt 종류

  • I/O Interrupt : 주어진 입출력 동작 완료 or 입출력 오류 발생 시에 CPU에게 알리는 인터럽트이다.
  • External Interrupt : 시스템 타이머에서 일정한 시간이 만료된 경우, 사용자가 직접 인터럽트 키를 입력한 경우 등에 발생한다.
    • 사용자가 키보드를 누를 때)
  • SVC(SuperVisor Call) Interrupt : 사용자 프로그램이 수행되는 과정에서 입출력 수행, 기억장치의 할당, 또는 사용자 개입 요구 등을 위하여 실행 중의 프로그램이 SVC 명령을 수행하는 경우에 발생한다.
    • admin 권한이 있어야 실행할 수 있을 때)
  • Machine check Interrupt : 컴퓨터 자체 내의 기계적인 장애나 오류(하드웨어적 문제)로 인한 인터럽트이다.
  • Program Error Interrupt : 프로그램 실행 오류로 인한 인터럽트이다.
    • 프로그램에서 0으로 나누는 연산이나 보호되어 잇는 기억장소에 대한 접근, 허용되지 않는 명령어 수행, 스택 오버플로우 등과 같은 오류
  • Restart Interrupt : 사용자가 콘솔 상의 재시작 키를 누를 때 발생하는 인터럽트이다.

인터럽트 처리 과정

1. 메인 메모리에서 CPU의 프로그램 수행 중에 인터럽트가 발생(프로그램 수행에 필요한 정보를 별도로 저장해 둠 - PSW(Program Status Word))
2. 해당 인터럽트 처리 루틴으로 이동(Context Swithching이 일어남)
3. 해당 인터럽트 수행 및 완료
4. 인터럽트가 발생했던 지점으로 복귀(미리 저장해 두었던 프로그램 수행 정보 이용)
5. 원래 수행 중이었던 프로그램을 재수행


BIOS(Basic Input/Ouput System) -> UEFI

  • ROM(Read Only Memory)에서 얻어낸 정보
  • 부트 프로세스를 실행시키는 명령어들을 포함하고 있다.
    • 컴퓨터 칩에 저장된 명령어들을 Firmware(펌웨어)라고 한다.
  • 최근 BIOS를 뛰어넘는 통일 확장 펌웨어 인터페이스인 UEFI(Unified Extensible Firmware Interface)가 이용되고 있다.
  • POST(Power On Self Test) : CPU, RAM, DVD-ROW 체크 -> 메모리 테스트 -> 부팅파일 로드
profile
개발자가 되고 싶은 1人

0개의 댓글