지식 공유

컴퓨터과학 총론 요약 - 3.운영체제

한상규 2020. 11. 23. 14:14

1. 운영체제의 발전

운영체제

컴퓨터의 전반적인 운영을 제어하는 소프트웨어

사용자가 파일을 저장하거나 불러올 수 있는 수단 제공

사용자가 프로그램 실행을 요청할 때 사용할 수 있는 인터페이스 제공

일괄 처리

한번에 한개씩 읽어와서 처리, 작업 큐에 작업이 선입선출로 읽어진다. 하지만 우선순위에 따라 작업큐가 완벽한 선입선출이 되지 않을 때가 많다.

대화식 처리

사용자와 상호작용하면서 프로그램을 실행하는 것

기존 방식은 프로그램이 한번 실행되면 사용자가 개입할 수 없었다. 그래서 문서 작업 프로그램 같은 반드시 사용자의 입력이 필요한 프로그램은 사용할 수 없었다.

실시간 처리

사용자의 입력에 충분히 신속하게 반응하는 것

시분할 방식

컴퓨터가 동시에 여러 서비스를 제공하는 것

멀티프로그래밍

시간을 작은 구간으로 나눠서 한 프로그램을 한 구간 동안만 실행시킨다. 현재의 작업은 잠시 제쳐놓고 다음 구간 동안 다른 프로그램을 실행시킨다. 이렇게 계속해서 교대해가면서 동시에 여러 작업을 실행하는 것, 시분할을 구현하는 방법

멀티태스킹

한 사용자가 동시에 여러 프로그램을 사용하는 것

다중프로세서 컴퓨터의 등장으로 운영체제도 진화하였다.

부하 균형

작업들을 여러 프로세서에 잘 할당하여 프로세서들을 효율적으로 사용하는 것

스케일링

작업을 이용 가능한 프로세스의 수에 맞추어 작은 작업으로 분할하는 것

네트워크를 관장하는 하나의 운영체제

네트워크 활동을 조정

임베디스 운영체제

임베디드 시스템에 사용되는 운영체제

2. 운영체제의 구조

2.1 소프트웨어 개관

2.1.1 응용 소프트웨어

스프레드시트, 데이터베이스 시스템, 개발용 소프트웨어, 게임 등

2.1.2 시스템 소프트웨어

2.1.2.1 유틸리티

압축프로그램, 미디어 재생 프로그램, 디스크 포맷 프로그램, 응용 소프트웨어와 분명하게 구별되지 않는다.

2.1.2.2 운영체제

2.1.2.2.1 사용자 인터페이스

shell - 텍스트 메시지를 통해 사용자와 대화한다.

GUI - 마우스를 사용하여 아이콘을 클릭하거나 끌어 움직여서 대화한다.

2.1.2.2.2 커널

파일 관리자

폴더, 디렉터리

 

장치 관리자

컴퓨터에 연결된 주변장치에 동작들을 수행하기 위해 제어기와 통신하거나 또는 주변장치와 직접 통신하는 프로그램

 

메모리 관리자

여러 프로그램들의 활동에 필요한 요구사항에 맞게 메모리를 할당한다. 할당된 메모리에서 프로그램이 실해되게 한다. 더 이상 이용되지 않는 메모리 영역을 추적한다.

 

페이징

사용 가능한 메모리 용량을 넘어서는 프로그램이 실행될 때는 보조기억장치와 주기억장치를 오가며 처리한다. 이 때 사용되는 단위가 페이지이다. 이때 만들어지는 기억공간을 가상 메모리라고 한다.

 

일정 관리자

다음에 어떤 작업을 실행시켜야 할지 결정한다.

 

실행 관리자

실행된 프로그램의 시간 할당을 관장한다.

 

2.3 운영체제의 시동

부팅

CPU의 프로그램 카운터는 항상 주기억장치의 비휘발성 영역(ROM)을 가르키고 있다.

ROM에는 부트스트랩이라는 프로그램이 저장되어 있다.

부트스프랩은 보조 기억장치에 저장된 운영체제를 주기억장치로 옮겨주는 역할을 한다.

3. 컴퓨터 활동의 조정

3.1 프로세스 개념

프로세스

운영체제에 의해 실행되고 있는 프로그램

프로세스 상태

특정 시점의 컴퓨터 스냅사진

현재 프로세스의 프로그램 카운터의 값, 다른 CPU 레지스터 및 관련 메모리 셀들의 값 등

3.2 프로세스 관리

일정관리자가 주기억장치에 프로세스 테이블을 유지한다. 프로세스 테이블에는 모든 프로세스에 대해 할당된 메모리 영역, 프로세스 상태 등이 저장된다.

콘텍스트 스위치

멀티프로그래밍에서 한 프로세스에서 다른 프로세스로 전환되는 것

인터럽트

멀티프로그래밍에서 한 프로세스가 실행 되어야 할 시간이 끝나다는 것을 알려주는 신호

4. 프로세스 간의 경쟁에 대한 처리

4.1 세마포어

한 자원을 사용하고 있다고 알려주는 방법은 무엇이 있을까? → 플래그를 이용한 방법

자원을 사용하고 있다고 플래그 값을 설정하면 다른 프로세스는 그 자원을 사용하기 전에 플래그 값을 보고 이미 다른 프로세스가 자원을 사용하고 있는지 알 수 있다.

하지만 만약 플래그 값을 해제하는 중간에 인터럽트가 발생하면 어떻게 될까?

프로세스는 이미 종료되었는데 플래그 값은 여전히 설정된 상태이므로 새로운 프로세스는 자원을 사용할 수 없게 된다.

이를 해결하기 위해 세마포어를 사용한다. 세마포어는 아래 개념을 이용해서 잘 구현한 것이다.

인터럽트 차단/허용

한 프로세스가 플래그 값을 변경하고 있을 때는인터럽트를 발생시킬 수 없다. 플래그 값을 변경한 후에 인터럽트를 발생시킬 수 있다.

검사지정

플래그 값이 설정되있는지 판단하여 프로세스를 실행하거나 실행하지 않는다. 프로세스를 실행했다면 플래그 값을 설정한다. 이 과정이 하나의 기계어로 처리 될 수 있도록 한다.

임계구역

한 번에 한 프로세스만 실행시킬 수 있는 일련의 명령 블록

상호배제

한번에 하나의 프로세스만이 임계 구역을 실행하도록 허용하자는 요구사항

전체적인 과정은 플래그를 이용한 방법과 다를 것이 없지만 검사지정과 인터럽트 차단/허용 임계구역으로 인해 인터럽트로 인한 문제를 해결할 수 있다.

4.2 교착상태

둘 이상의 프로세스가 서로 상대방에 할당된 자원을 기다리느라 어느 프로세스도 진행하지 못하는 상태

다음 세가지 조건이 모두 충족되면 발생한다.

  1. 공유할 수 없는 자원에 대한 경쟁이 존재
  2. 자원에 대한 요청이 단계적으로 이루어진다.
  3. 일단 자원이 할당되면, 강제로 회수할 수 없다.

5. 보안

5.1 외부로부터의 공격

로그인

어떤 계정으로 로그인 했는지에 따라 접근권한이 달라진다.

관리자

운영체제에 대한 높은 접근 권한을 갖는 계정

감사 소프트웨어

반복적인 로그인 실패나 이전과 다른 행동을 감지한다.

스니퍼

운영체제에 명령을 보내는 것 처럼 위장해서 사용자의 중요 정보를 빼온다.

5.2 내부로부터의 공격

특권 수준

이 수준에 따라 실행할 수 있는 명령어가 달라진다.

특권 모드

모든 기계어 명령어을 실행할 수 있다.