운영체제 - Chapter1. 서론

2020. 11. 24. 00:57개인공부/운영체제 공룡책 10판

목차

Chapter 1. 서론

  1. 운영체제가 할 일
  2. 컴퓨터 시스템의 구성
  3. 컴퓨터 시스템 구조
  4. 운영체제의 작동
  5. 자원 관리
  6. 보안과 보호
  7. 가상화
  8. 분산 시스템
  9. 커널 자료구조
  10. 계산 환경
  11. 무료 및 공개 소스 운영체제
  12. 요약

 

Chapter 1. 서론

운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어이다.

 

 

1.1 운영체제가 할 일 - p4

운영체제는 정부처럼 그 자체로는 유용한 기능을 수행하지 못한다. 운영체제는 단순히 다른 프로그램이 유용한 작업을 할 수 있는 환경을 제공한다.

 

1.1.1 사용자 관점 - p4

컴퓨터에 대한 사용자의 관점은 사용되는 인터페이스에 따라 달라진다.

 

 1.1.2 시스템 관점 - p5

컴퓨터의 관점에서 운영체제는 하드웨어와 가장 밀접하게 연관된 프로그램이다. 따라서 우리는 운영체제를 자원 할당자로 볼수있다.

 

1.1.3 운영체제의 정의 - p5

운영체에는 항상 실행 중인 커널, 응용 프로그램 개발을 쉽게 하고 기능을 제공하는 미들웨어 프레임워크 및 시스템 실행 중에 시스템을 관리하는 데 도움이 되는 시스템 프로그램이 포함된다.

 

1.2 컴퓨터 시스템의 구성 -p7

현대의 범용 컴퓨터 시스템은 하나 이상의 CPU와 구성요소와 공유 메모리 사이의 액세스를 제공하는 공통 버스를 통해 연결된 여러 장치 컨트롤러로 구성된다. 일반적으로 운영체제에는 각 장치 컨트롤러마다 장치 드라이버가 있다.

 

1.2.1 인터럽트 - p7

컨트롤러는 장치 드라이버에게 작업을 완료했다는 사실을 어떻게 알리는가? 이는 인터럽트를 통해 이루어진다.

 

1.2.1.1 개요 - p8

하드웨어는 어느 순간이든 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킬 수 있다.

  1. CPU가 인터럽트 되면, CPU는 하던 일을 중단하고 즉시 고정된 위치로 실행을 옮긴다 (이러한 고정된 위치는 일반적으로 인터럽트를 위한 서비스 루틴이 위치한 시작 주소를 가지고 있다.)
  2. 인터럽트 서비스 루틴이 실행된다
  3. 인터럽트 서비스 루틴(인터럽트 핸들러)의 실행이 완료되면, CPU는 인터럽트 되었던 연산을 재개한다.

1.2.1.2 구현 - p9

  1. CPU하드웨어에는 인터럽트 요청라인이라는 선이 있는데, 이는 하나의 명령어의 실행을 완료할 때마다 CPU가 이 선을 감지한다.
  2. CPU가, 컨트롤러가 인터럽트 요청 라인에 신호를 보낸 것을 감지하면, 인터럽트 번호를 읽고 이 번호를 인터럽트 벡터의 인덱스로 사용하여 인터럽트 핸들러 루틴으로 점프한다
  3. 그런 다음 해당 인덱스와 관룐된 주소에서 실행을 시작한다
  4. 인터럽트 핸들러는 작업 중에 변경될 상태를 저장하고, 인터럽트 원인을 확인하고, 필요한 처리를 수행하고, 상태 복원을 수행하고, return_from_interrupt 명령어를 실행하여 CPU를 인터럽트 전 실행 상태로 되돌린다.

1.2.2 저장장치 구조 - p12

RAM- 범용 컴퓨터는 프로그램 대부분을 메인 메모리(RAM)을 재기록 가능한 메모리에서 가져온다.

ROM- 컴퓨터 전원을 켤 때 가장 먼저 실행되는 프로그램은 부트스트랩 프로그램이며 운영체제를 적재한다.

보조저장장치 - 대부분의 컴퓨터 시스템은 메인 메모리의 확장으로 보조저장장치를 제공한다( 영구 보존 )

 

1.2.3 입출력 구조 - p15

인터럽트 I/O - 소량의 데이터 이동

NVS I/O - 대량 데이터 이동 ( 높은 오버헤드를 해결하기 위해 직접 메모리 액세스(DMA) 사용 )

 

 

1.3 컴퓨터 시스템 구조 - p16

컴퓨터 시스템은 사용된 범용 처리기의 수에 따라 분류 가능한 다양한 방식으로 구성될 수 있다.

 

1.3.1 단일 처리기 시스템 - p16

단일 처리 코어를 가진 범용 CPU가 하나만 있는 경우 시스템은 단일 프로세서 시스템이다.

( 현대 컴퓨터 시스템은 단일 프로세서 시스템이 거의 없다.)

 

1.3.2 다중 처리기 시스템 - p17

가장 일반적인 다중 처리기 시스템은 각 피어 CPU 프로세서가 운영체제 기능 및 사용자 프로세스를 포함한 모든 작업을 수행하는 SMP를 사용한다.

 

1.3.3 클러스터형 시스템 -p20

여러 CPU를 가진 시스템의 또 다른 유형. 둘 이상의 독자적 시스템 또는 노드들을 연결하여 구성한다는 점에서 다중 처리기 시스템과 차이가 난다. 각 노드는 통상 다중 코어 시스템이다. 그러한 시스템은 약결합(loosely coupled)라고 간주된다.

 

비대칭형 클러스터링 - 다른 컴퓨터들이 응용 프로그램을 싱행하는 동안 한 컴퓨터는 긴급대기 모드 상태를 유지

대칭형 클러스터링 - 둘 이상의 호스트들이 응용 프로그램을 실행하고 서로를 감시

 

1.4 운영체제의 작동 -p23

컴퓨터 실행시 - CPU 레지스터에서 장치 컨트롤러, 메모리 내용에 이르기까지 시스템의 모든 측면을 초기화 한다. 부트 스트랩 프로그램이 운영체제 커널을 찾아 메모리에 적재한다.

 

실행할 프로세스, 서비스할 I/O 장치 및 응답할 사용자가 없는 경우 운영체제는 조용히 무언가가 발생할 때까지 기다린다.

 

 

1.4.1 다중 프로그래밍과 다중 태스킹 -p24

다중 프로그래밍 :

CPU가 항상 한 개는 실행할 수 있도록 프로그램을 구성하여 CPU 이용률을 높이고 사용자 만족도를 높인다.

 

다중 태스킹:

다중 프로그래밍의 논리적 확장이다. 다중 태스킹 시스템에서 CPU는 여러 프로세스를 전환하며 프로세스를 실행하지만 전환이 자주 발생하여 사용자에게 빠른 응답 시간을 제공하게 된다.

 

1.4.2 이중-모드와 다중모드 운용 -p26

적어도 두 개의 독립된 연산 모드, 즉 사용자 모드와 커널모드를 필요로 한다. 모드 비트라고 하는 하나의 비트가 현재의 모드를 나타내기 위해 컴퓨터의 하드웨어에 추가 되었다. 이 비트는 커널 모드(0) 또는 사용자 모드(1)를 나타낸다.

 

1.4.3 타이머(Timer) -p28

타이머는 지정된 시간 후 컴퓨터를 인터럽트 하도록 설정할 수 있다.

가변 타이머는 일반적으로 고정률의 클록과 계수기로 구현한다.

사용자에게 제어를 양도하기 전에, 운영체제는 타이머가 인터럽트를 할 수 있도록 설정되었는지를 확인한다.

 

 

1.5 자원 관리 -p28

운영체제는 자원 관리자이다.

  1. 시스템의 CPU
  2. 메모리 공간
  3. 파일-저장 공간 및 I/O 장치는 운영체제가 관리해야 하는 자원에 속한다.

1.5.1 프로세스 관리 -p29

실행 중인 프로그램인 프로세스다. 프로그램 그 자체는 프로세스가 아니다. 하나의 프로그램은 디스크에 저장된 파일의 내용과 같이 수동적 개체지만 프로세스는 다음 수행할 명령을 지정하는 프로그램 카운터를 가진 능동적인 개체이다.

 

운영체제는 프로세스 관리와 연관해 다음과 같은 활동에 대한 책임을 진다.

  1. 사용자 프로세스와 시스템 프로세스의 생성과 제거
  2. CPU에 프로세스와 스레드 스케줄하기
  3. 프로세스의 일시 중지와 재수행
  4. 프로세스 동기화를 위한 기법 제공
  5. 프로세스 통신을 위한 기법 제공

1.5.2 메모리 관리 -p30

운영체제는 메모리 관리와 관련하여 다음과 같은 일을 담당해야 한다.

  1. 메모리의 어느 부분이 현재 사용되고 있으며 어느 프로세스에 의해 사용되고 있는지를 추적해야 한다.
  2. 필요에 따라 메모리 공간을 할당하고 회수해야 한다.
  3. 어떤 프로세스(또는 그 일부) 들을 메모리에 적재하고 제거할 것인가를 결정해야 한다.

 

1.5.3 파일 시스템 관리 -p31

 

 

운영체제는 파일 관리를 위하여 다음과 같은 일을 담당한다.

  1. 파일의 생성 및 제거
  2. 디렉터리 생성 및 제거
  3. 파일과 디렉터리를 조작하기 위한 프리미티브의 제공
  4. 파일을 보조저장장치로 매핑
  5. 안정적인(비휘발성) 저장 매체에 파일을 백업

 

1.5.4 대용량 저장장치 관리 -p32

운영체제는 보조저장장치 관리와 관련하여 다음 활동을 담당한다.

  1. 마운팅과 언마운팅
  2. 사용 가능 공간(free-space)의 관리
  3. 저장장소 할당
  4. 디스크 스케줄링
  5. 저장장치 분할
  6. 보호

 

1.5.5 캐시 관리 -p33

캐시는 운영체제로 제어할 수 없다. 캐시 크기가 제한되어 있으므로 캐시관리는 중요한 설계 문제다.

캐시로 부터 CPU 및 레지스터로의 데이터 전송은 통상 운영체제의 간섭 없이 하드웨어적으로 이루어진다.

(디스크와 메모리 간의 데이터 전송은 통상 운영체제에 의해 제어된다.)

 

1.5.6 입출력 시스템 관리 I/O Systems Management -p34

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

UNIX에서 입출력 장치의 특성은 입출력 서브시스템에 의해 운영체제 자체의 대부분으로 부터 숨겨져 있다.

 

 

1.6 보안과 보호 -p35

보호란 컴퓨터 시스템이 정의한 자원에 대해 프로그램, 프로세스, 또는 사용자들의 접근을 제어하는 기법이다.

보안은 외부 또는 내부의 공격을 방어하는 것이다.

 

1.7 가상화 -p36

가상화는 단일 컴퓨터(CPU, 메모리, 디스크 드라이브, 네트워크 인터페이스 카드 등)의 하드웨어를 여러 가지 실행 환경으로 추상화하여 개별 환경이 자신만의 컴퓨터에서 실행되고 있다는 환상을 만들 수 있는 기술이다.

 

1.8 분산 시스템 - p38

분산 시스템은 물리적으로 떨어져 있는 이기종 컴퓨터들의 집합이다.

 

1.9 커널 자료구조 - p39

1.9.1 리스트, 스택 및 큐 - p39

리스트는 데이터 값들의 집단을 하나의 시퀀스로 표시한다. 이 구조를 구현하는 가장 일반적인 방법이 연결 리스트(lniked list)이다.

연결 리스트에서는 각 항이 다른 하나에 연결되어 있다.

  1. 단일 연결 리스트는 후속항을 가리킨다
  2. 이중 연결 리스트는 자신의 앞 항이나 뒤 항을 가리킨다
  3. 원형 연결 리스트는 리스트의 마지막 항이 null이 아니라 첫 항을 가리킨다.

스택은 순차적 순서를 가진 자료구조로 항을 넣거나 꺼내는 데 후입선출(last in first out, LIFO)을 사용한다.

 

는 순차 순서의 자료구조로 선입선출(first in first out, FIFO)을 사용한다.

 

1.9.2 트리 - p41

트리는 데이터의 서열을 표시하는 데 사용 가능한 자료구조이다. 트리 구조에서 데이터 값들은 부모-자식 관계로 연결된다.

일반트리 - 부모는 임의의 자식을 가질 수 있다.

이진트리 - 부모는 최대 두 개의 자식을 가질수 있다. 이를 좌측 자식, 우측 자식이라 부른다.

이진 탐색 트리 - 추가로 붐의 두 자식 사이에 좌측 자식 <= 우측 자식의 순서를 요구한다. (  최악의 경우 성능 = O(n)  )

군형 이진 탐색트리 - 최악 경우 성능  O(lg n)을 보장

 

1.9.3 해시 함수와 맵 - p41

해시 함수는 데이터를 입력으로 받아 이 데이터에 산술 연산을 수행하여 하나의 수를 반환한다.

 

1.9.4 비트맵 - p42

비트맵은 n개의 항의 상태를 나타내는 데 사용 가능한 n개의 이진 비트의 스트링이다.

 

1.10 계산 환경 - p43

1.10.1 전통적 계산 -p43

배치 시스템 파일이나 다른 데이터 소스로부터 미리 정해진 입력을 가지고 대량으로 작업을 처리하였다.

대화형 방식 시스템은 사용자로부터 입력을 기다렸다.

계산 자원을 최적으로 사용하기 위하여 다중 사용자들이 이 시스템을 나누어 사용했다.

이러한 시분할 시스템은 자원의 일정량을 각 사용자에게 프로세스를 CPU에 하나씩 순환시켜 가면서 실행시키기 위하여 타이머와 스케줄링 알고리즘을 이용한다.

 

1.10.1 모바일 컴퓨팅 -p44

모바일 컴퓨팅은 휴대용 스마트폰과 태블릿 컴퓨터의 컴퓨팅 환경을 말한다 ( iOS & Adroid )

 

1.10.3 클라이언트 서버 컴퓨팅 -p45

현대 네트워크 구조는 서버 시스템클라이언트 시스템이 생성한 요청을 만족시키는 배치를 특징으로 한다

클라이언트-서버 시스템이라 불린다.

 

계산-서버 시스템

클라이언트가 어떤 작업을(ex 데이터 일기) 요청할 수 있는 인터페이스를 제공한다. 그 결과로 서버는 그 작업을 수행하고 그 결과를 클라이언트에게 돌려보낸다.

ex) 클라이언트의 데이터 요청에 응답하는 DB를 실행하고 있는 서버.

 

파일-서버 시스템

클라이어트가 파일을 생성, 갱신, 읽기 및 제거할 수 있는 파일 시스템 인터페이스를 제공한다.

ex) 웹 브라우저 클라이언트에게 파일을 전달하는 웹 서버

 

1.10.4 피어 간 계산 -p46

분산 시스템의 다른 구조는 피어 간 시스템(P2P)이다.

 

1.10.5 클라우드 컴퓨팅 -p47

클라우드 컴퓨팅은 계산, 저장장치는 물론 응용조차도 네트워크를 통한 서비스로 제공하는 계산 유형이다. 어떤 면에서 클라우드 컴퓨팅은 가상화를 그 기능의 기반으로 사용하기 때문에 가상화의 논리적 확장이다.

ex) 아마존의 ec2

 

1.10.6 실시간 내장형 시스템 -p48

내장형 시스템은 거의 언제나 실시간 운영체제를 수행한다. 실시간 시스템은 처리기의 작동이나 데이터의 흐름에 엄격한 시간 제약이 있을 때 사용한다.

 

실시간 시스템은 잘 정의된, 고정된 시간 제약을 가진다. 정의된 제한 시간 내에 처리가 반드시 이루어져야 하며, 그렇지 않으면 시스템은 실패하게 된다.

 

1.11 무료 및 공개 소스 운영체제 -p50

무료 운영체제와 공개 소스 운영체제는 컴파일된 이진 코드가 아닌 소스 코드 형식으로 제공된다.

 

1.11.1 역사 -p51

현대 컴퓨팅의 초기(1950년대)에 소프트웨어는 일반적으로 소스 코드와 함께 제공되었다.

1980년 까지는 독점 소프트웨어가 일반적인 경우였다.

1.11.2 무료 운영체제 -p51

소프트웨어 사용 및 재배포를 제한하려는 움직임에 대응하기 위해 1984년 Richard Stallman은 GNU라는 무료 UNIX 호환 운영체제( GNU's Not Unix!"의 약어) 를 개발하기 시작하였다.

 

1.11.3 GNU/Linux - p52

1.11.4 BSD Unix - p53

1.11.5 Solaris -p54

1.116 학습 도구로서 공개 소스 시스템 -p54

 

 

 

1.12 요약 -p56

  • 운영체제는 컴퓨터 하드웨어를 관리하고 응용 프로그램 실행 환경을 제공하는 소프트웨어이다.
  • 인터럽트는 하드웨어가 운영체제와 상호 작용하는 주요 방법이다. 하드웨어 장치는 CPU에 신호를 보내 인터럽트를 촉발하여 일부 이벤트에 주의가 필요하다는 것을 CPU에게 경고한다. 인터럽트는 인터럽트 핸들러에 의해 관리된다.
  • 컴퓨터가 프로그램을 실행하려면 프로그램이 메인 메모리에 있어야 한다. 이 메모리는 프로세서가 직접 액세스 할 수 있는 유일한 대용량 저장장소이다.
  • 메인 메모리는 일반적으로 전월을 끄거나 잃을 때 내용이 손실되는 휘발성 저장장치 이다.
  • 비휘발성 저장장치는 메인 메모리의 확장이며 대량의 데이터를 역구적으로 보유할 수 있다.
  • 가장 일반적인 비휘발성 저장장치는 프로그램과 데이터를 모두 저장할 수 있는 하드 디스크이다.
  • 컴퓨터 시스템의 다양한 저장장치 시스템은 속도와 비용에 따라 계층 구조로 구성할 수 있다. 레벨이 높을수록 비싸지만 속도가 빠르다. 계층이 내려갈수록 일반적으로 비트당 비용은 감소하고 반면 액세스 시간은 증가한다
  • 최신 컴퓨터 아키텍처는 각 CPU에 여러 컴퓨팅 코어가 포함된 다중 처리기 시스템이다.
  • CPU를 최대한 활용하기 위해 최신 운영체제는 다중 프로그래밍을 사용하여 여러 작업을 동시에 메모리에 적재할 수 있으므로 항상 CPU가 실행할 작업이 있게 보장한다.
  • 다중 태스킹은 CPU 스케줄링 알고리즘이 프로세스 간에 빠르게 전환하여 사용자에게 빠른 응답 시간을 제공하는 다중 프로그래밍의 확장이다
  • 사용자 프로그램이 시스템의 올바른 작동을 방해하지 않도록 시스템 하드웨어에는 사용자 모드와 커널 모드의 두 가지 모드가 있다.
  • 다양한 명령어가 특권을 가지며 커널 모드에서만 실행될 수 있다. 예를 들어 커널 모드로 전환하는 명령, I/O 제어, 타이머 관리 및 인터럽트 관리가 이러한 명령어들이다.
  • 프로레스는 운영체제의 기본 작업 단위이다. 프로세스 관리에는 프로세스 생성 및 삭제와 프로세스 간 통신 및 동기화 기법 제공이 포함된다.
  • 운영체제는 사용중인 메모리 영역과 사용 중인 프로세스를 추적하여 메모리를 관리한다. 또한 메모리 공간을 동적으로 할당하고 해제해야한다.
  • 저장장치 공간은 운영체제에서 관리한다. 이러한 책무에는 파일 및 디렉터리를 나타내는 파일 시스템을 제공하고 대용량 저장장치의 공간을 관리하는 것이 포함된다.
  • 운영체제는 ㅇ누영체제 및 사용자를 보호하고 안전하게 만들기 위한 기법을 제공한다. 보호 조치는 컴퓨터 시스템에서 사용 가능한 자원에 대한 프로세스 또는 사용자의 액세스를 제어한다.
  • 가상화에는 컴퓨터 하드웨어를 여러 가지 실행 환경으로 추상화하는 작어비 포함된다.
  • 운영체제에서 사용되는 자료구조엔 리스트, 스택, 큐, 트리 및 맵이 포함된다.
  • 컴퓨팅은 전통적인 컴퓨팅, 모바일 컴퓨팅, 클라이언트-서버 시스템, 피어 간 시스템, 클라우드 컴퓨팅 및 실시간 임베디드 시스템을 포함한 다양한 환경에서 이루어진다.
  • 무료 및 공개 소스 운영체제는 소스 코드 형식으로 제공된다. 무료 소프트웨어는 무료로 사용, 재배포 및 수정이 가능하다. GNU/Linux, FreeBSD 및 Solaris는 널리 사용되는 공개 소스 시스템의 예이다.

 

 

연습문제 - p58

 

1.1 운영체제의 세 가지 주요 목적은 무엇인가?

 

1.2 컴퓨팅 하드웨어를 효율적으로 사용하려면 운영체제가 필요하다고 강조하였다. 운영체제가 이 원칙을 버리고 자원을 낭비하는 것이 적절한 때는 언제인가? 그러한 시스템이 실제로 낭비하는 것이 아닌 이유는 무엇인가?

 

1.3 실시간 환경을 위해 운영체제를 작성할 때 프로그래머가 극복해야 하는 주요 어려움은 무엇인가?

 

1.4 운영체제의 다양한 정의를 염두에 두고 운영체제에 웹 브라우저 및 메일 프로그램과 같은 응용 프로그램이 포함되어야 하는지 생각해 보라. 포함시킨다와 포함 시키지 않는다는 주장 모두의 입장에서 논증하라.

 

1.5 커널 모드와 사용자 모드의 구별은 기본적인 형태의 보호(보안)로서 어떤 기능을 하는가?

 

1.6 다음 중 특권 명령이어야 하는 명령어는 무엇인가?

 

1.7 일부 초기 컴퓨터는 운영체제를 사용자 작업이나 운영체제 자체에서 수정할 수 없는 메모리 파티션에 배치하여 운영체제를 보호하였다. 이러한 기법에서 발생할 수 있다고 생각되는 두 가지 어려움을 설명하라.

 

1.8 일부 CPU는 세 개 이상의 작동 모드를 제공한다. 이 다중 모드를 사용할 수 있는 두 가지 경우는 무엇인가?

 

1.9 타이머는 현재 시간을 계산하는 데 사용될 수 있다. 어떻게 계산이 가능한지 간단하게 설명하라.

 

1.10 캐시가 유용한 두가지 이유를 제시하라. 어떤 문제를 해결할 수 있는가? 어떤 문제를 야기하는가? 캐시의 크기를 캐싱하는 장치만큼 크게 만들 수 있다면 (예 : 디스크의 크기와 같은 캐시) 캐시의 용량을 늘린 후 원래 장치를 제거하지 않는 이유는 무엇인가?

 

1.11 분산 시스템의 클라이언트 - 서버 시스템과 피어 간 모델의 차이를 설명하라