[CS] 운영체제 - 1

morecodeplease·2023년 10월 12일
0

CS

목록 보기
1/3

운영체제란?

컴퓨터와 컴퓨터 사용자 간의 중재자 역할을 하는 프로그램이다. (정확한 정의가 없다.)

운영체제 목표

  • 사용자 프로그램을 실행하고 사용자 문제를 쉽게 해결하는 것
  • 컴퓨터 시스템을 사용하기 쉽게 만드는 것
  • 컴퓨터 하드웨어를 효율적으로 사용

운영체제 정의

시스템 관점의 정의

  • 운영체제는 최고의 자원 할당자(resource allocator)이다.
  • 모든 자원을 관리한다.
  • 운영체제는 제어 프로그램(control program)이다.
  • 에러를 방지하고 컴퓨터의 부적절한 사용을 방지하기 위해 프로그램으 실행을 제어한다.
  • 일반적인 정의로 운영체제는 컴퓨터에서 항상 실행하는 한 개의 프로그램으로 커널(kernel)이라 한다.

컴퓨터 시작

부트스트랩 프로그램 (bootstrap program)

  • 전원을 키거나 재부팅 될 때 사용
  • 시스템 모든 장치 (HW) 를 초기화
  • 운영체제의 커널을 메모리에 적재(Loader) 하고 실행한다.

인터럽트(Interrupt)

  • 운영체제는 인터럽트(Interrupt) 기반으로 동작한다.
  • HW나 SW에서 이벤트가 발생하면 이를 인터럽트 를 사용해 시스템에 알린다.
  • CPU가 인터럽트 되면, CPU는 하던 일을 멈추고(suspend) ,즉시 고정된 위치 로 실행을 옮겨 인터럽트를 처리한다.
  • 인터럽트 구조에서 인터럽트 당한 명령의 주소 저장 되어야 한다.

인터럽트 핸들링

인터럽트는 인터럽트 벡터를 사용하여 제어를 인터럽트 서비스 루틴으로 넘긴다.

  • 인터럽트 벡터는 모든 서비스 루틴의 주소를 가지고 있다.

인터럽트 처리 과정

  1. 요청
  • 인터럽트가 발생해 CPU에 처리 요청
  1. 중단
  • CPU에서 처리 중이었던 프로세스 중단
  1. 보관
  • 이전 작업을 인터럽트 처리 후 재개해야 하기 때문에 정보를 보관해 놓는
    PCB(Process Control Block)을 이용 -> PCB안에 PC가 저장되어 있다
  1. 처리
  • ISR(Interrupt Service Routine) = Interrupt Handler 대로 처리
  1. 재개
  • PCB 안 저장된 정보들로 다시 처리 중이었던 프로세스로 돌아온다.

저장장치 계층 구조

저장장치계층 구조를 이루고, 계층이 높을수록 속도가 빠르고 가격이 올라가는 특징이 있다.

저장장치의 성능

  • 저장 장치 계층 구조상에서 자료 이동은 운영체제 관점에서 명시적(explicitly) 또는 묵시적으로(implicitly) 이루어진다.
  • 캐시 <-> CPU, 레지스터 : 묵시적(운영체제 관여없이 하드웨어에 의해서)
  • 메모리 <-> 디스크 : 명시적(운영체제가 관할)

캐싱

  • 사용되고 있는 정보가 느린 저장장치에서 빠른 저장장치로 복사되어 일시적으로 머무는 것
  • 정보가 빠른 저장장치(캐시) 에 있는지 먼저 확인하고 있으면 캐시에서 정보를 가지고 오고 없으면, 자료가 캐시에 복사되고 캐시에서 사용된다.
  • 캐시는 캐시되는 저장장치보다 크기가 작다.
  • 다중처리기 환경에서는 캐시의 일관성(cache coherence)을 유지하여 모든 CPU가 자신의 캐시에 최신 값을 가지고 있어야 한다.

메모리 직접 접근(DMA, Direct Memory Access)

  • 고속의 입출력 장치가 메모리 속도에 근접하는 속도로 정보를 전송할 때 사용.
  • 장치 제어기가 버퍼 스토리지에서 주저장 장치에 CPU의 관여없이 직접 데이터 블록을 전송.

단일 처리기 시스템(Single-Processor System)

  • 대부분의 시스템은 한 개의 범용 프로세서를 사용한다.
  • 디스크/키보드/그래픽 제어기
  • 입출력 처리기

다중 처리기 시스템(Multi-Processor Systems)

  • 병렬시스템(Parallel systems) , 강결합 시스템(Tightly-coupled systems) 이라고도 한다.

주요 장점

  • 향상된 처리량
  • 규모의 경제
  • 향상된 신뢰성 (각각 독립적이기 때문에 하나가 죽어도 영향이 없다.)

두 종류

  • 비대칭적 다중처리 (Asymmetric Multiprocessing) - 주 처리기가 시스템 제어, 각 처리기에 특정 태스크 할당, 주종관계
  • 대칭적 다중처리(Symmetric Multiprocessing) - 모든 처리기가 대등 (위의 사진이 대칭적 다중처리 구조 이다.)

단일 프로그래밍(Single-programming)

  • 단일 프로그래밍은 그림과 같이 한번에 하나씩만 실행 가능하다.
  • 사용자가 CPU와 입출력장치를 계속 사용할 수 없다.

다중 프로그래밍(Multi-programming)

  • CPU가 항상 하나 이상의 작업을 실행할 수 있게 구성되있다.
  • 단일 프로그래밍의 단점을 보완하고 효율성을 위해 필요하다.
  • 작업 스케줄러가 한 개의 작업을 선택하여 CPU에 할당한다.
  • 커널(Kernel)이 최상단에 위치한 다음에 프로그램이 쌓인다.

시분할(Timesharing 또는 Multitasking)

  • 다중 프로그래밍의 논리적 확장
  • 시분할은 사용자가 컴퓨터의 자원을 효율적으로 공유(sharing)하는 것이다.
  • CPU가 다수의 작업들을 매우 빈번하게 교대로 실행하여 사용자들은 자신의 작업과 상호작용 할 수 있다. ( 응답시간이 1초 이내 여야 한다.)

이중 동작 모드(Dual Mode)

  • 이중 동작모드가 운영체제와 다른 시스템 부분들을 보호한다.
  • CPU가 명령어를 실행하는 모드를 사용자 모드커널 모드로 구분한다.

사용자 모드 (User Mode)

  • 운영체제 서비스를 제공받을 수 없는 실행 모드
  • 커널 영역의 코드를 실행할 수 없는 모드
  • 일반적 응용 프로그램은 기본적으로 사용자 모드로 실행
    (일반적 응용 프로그램은 자원에 접근할 수 없음)

커널 모드 (Kernel Mode)

  • 운영체제 서비스를 제공받을 수 있는 실행 모드
  • 커널 영역의 코드를 실행할 수 있는 모드
  • 자원에 접근하는 명령어를 비롯한 모든 명령어 실행 가능
  • 운영체제를 커널 모드로 전환하려면 시스템 콜(System Calls)을 해야한다.

시스템 콜 (System Calls)

  • 운영체제 모드를 커널 모드로 전환하는 방법
  • 일종의 소프트웨어 인터럽트 이다. (특정 명령어에 의해 발생하는 인터럽트)
  • 시스템 콜을 빈번히 발생시키고 모드를 오가며 실행한다.

타이머(Watch dog)

  • 타이머는 무한 루프나 주어진 시간에 특정 일이 발생하는지 감시하는 기능이다.
  • 특정 동작이 안넘어가면 타이머가 리셋을 시킨다.
  • 운영체제가 카운터 값을 감소시키고 카운터가 0이 되면 인터럽트가 발생한다.
  • 타이머 인터럽트 발생 시 운영체제가 제어한다.

프로세스 관리

프로세스란?

  • 실행 중인 프로그램 (program in execution)
  • 시스템에서 작업의 한 단위
  • 프로그램은 수동적 개체, 프로세스는 능동적 개체

프로세스는 업무 수행을 위한 자원이 필요하다.

  • CPU,저장장치,입출력장치,파일
  • 초기화 자료

프로세스 종료 후 재사용 가능한 자원은 회수한다.

운영체제의 프로세스 관리

  • 사용자(시스템) 프로세스 생성과 제거
  • CPU에 프로세스와 쓰레드 스케줄링
  • 프로세스 일시 중지와 재실행
  • 프로세스 동기화를 위한 기법 제공
  • 프로세스 통신을 위한 기법 제공
  • 데드락(deadlock) 처리를 위한 기법 제공

메모리 관리

  • 모든 자료는 처리 전과 후에 메모리에 있게 된다. (CPU가 직접 Access하는 곳은 메모리다.)
  • 메모리의 어느 부분이 현재 사용되고 있으며 누가 사용하고 있는지 추적
  • 필요에 따라 메모리 공간 할당 및 회수

입출력 시스템

  • 운영체제의 목적 중 하나는 사용자로부터 특정 하드웨어 장치의 특성을 숨기는 것이다.

입출력 메모리 관리

  • 버퍼링 : 자료 이동 중에 일시적인 자료 보관
  • 캐싱 : 성능을 위해 자료의 일부분을 보관
  • 스풀링(spooling) : 프린터 같은 장치에서 한 작업의 출력이 다른 작업의 출력과 동시에 작업

보호와 보안

  • 보호(protection) : 컴퓨터 시스템이 정의한 자원에 대해 프로그램, 프로세스 또는 사용자들의 접근을 제어하는 기법
  • 보안(security) : 외부 또는 내부의 공격을 방어하는 것
profile
Everyday's a lesson

0개의 댓글