본문 바로가기
운영체제

[운영체제] 1장

by chengzior 2021. 7. 5.

 

Operating System Concepts : Chapter 1

 

1.. 운영체제란?

-컴퓨터 하드웨어를 관리하는 소프트웨어

-응용 프로그램을 위한 기반 제공

-사용자와 컴퓨터 하드웨어 사이에서 중재자 역할 수행

 

2. 컴퓨터 시스템의 구성

-하드웨어, 운영체제, 응용프로그램, 사용자로 구성

-하나 이상의 CPU와 공통 버스를 통해 연결된 장치 컨트롤러로 구성

 

1) 시스템의 작동 방식: 인터럽트(Interrupts)

-운영체제, 하드웨어 상호 작용 방식의 핵심

-하드웨어는 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킴

-CPU가 인터럽트 되면 하던 일을 중단하고 고정된 위치로 실행을 옮긴 후 인터럽트 서비스 루틴(ISR)을 실행

-인터럽트 서비스 루틴의 실행이 완료되면 CPU는 중단되었던 연산을 재개

-인터럽트는 빈번하게 발생하기에 빠르게 처리되어야 함

→ 빠른 속도를 위해 포인터의 테이블 이용

 (포인터들의 테이블은 하위메모리에 저장, 이 위치에는 여저 장치에 대한 인터럽트 서비스 루틴의 주소가 들어있음

인터럽트가 요청되면 인터럽트 벡터가 인터럽트 요청과 함께 주어진 고유의 유일한 장치 번호로 색인됨.)

-각 컴퓨터 시스템은 자신의 인터럽트 메커니즘을 가지고 있음(몇 가지 기능은 공통적)

-인터럽트 루틴은 현재 상태 저장하고 복귀하기 전에 상태를 복원해야 함

 

2) 인터럽트 구현(Implementation)

①CPU는 하나의 명령어를 실행할 때마다 인터럽트 요청 라인을 확인

②컨트롤러가 신호 보낸 것을 감지하면 인터럽트 번호를 읽고 이 번호를 인터럽트 벡터의 인덱스로 사용하여 인터럽트 핸들러 루틴(interrupt-handler routine)으로 점프함

③해당 인덱스와 관련된 주소에서 실행을 시작

④인터럽트 처리기는 작업 중에 변경될 상태 저장, 인터럽트 원인 확인, 필요한 처리 수행, 상태 복원 실행함

⑤return_from_interrupt 명령어 실행하여 CPU를 인터럽트 전 실행 상태로 되돌린다.

-장치 컨트롤러가 인터럽트 요청 라인에 신호를 선언하여 인터럽트를 발생(raise)시키고 CPU는 인터럽트를 포착(catch)하여 인터럽트 핸들러로 디스패치(dispatch)하고 핸들러는 장치를 서비스하여 인터럽트를 지운다(clear).

 

3) 저장장치의 구조(Storage Structure)

-프로그램 실행위해 우선 메모리에 적재해야 함.

-범용 컴퓨터는 프로그램 대부분을 메인 메모리(random-access memory,RAM)에서 가져온다

-메인 메모리는 전원이 공급되지 않으면 데이터를 잃어버리는 휘발성 저장장치이다

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

-메모리는 바이트의 배열이며 자신의 주소를 가지고 있다

-컴퓨터 시스템은 메인 메모리의 확장으로 보조저장장치를 제공한다.

→ 하드디스크 드라이브(HDD)와  비휘발성(NVM)장치

-백업 사본을 저장하기 위해 용량이 크고 느린 3차 저장장치를 사용한다.

-저장장치 계층 구조

1차
저장장치
레지스터
캐시
메인 메모리
2차
저장장치
비휘발성 메모리
하드디스크 드라이브
3차
저장장치
광학디스크
자기테이프

-상위 계층일수록 액세스 시간이 빠르고 저장 용량이 작다

 

4)입출력 구조(I/O structure)

-인터럽트 구동 I/O 형태는 소량의 데이터를 이동하기에 유리하지만 NVS I/O와 같은 대량 데이터 이동에 사용될 때는 높은 오버헤드를 유발한다.

-문제 해결 위해 직접 메모리 액세스(DMA)가 사용된다.

ㄴDMA: CPU의 개입 없이 <메모리에서 자신의 버퍼장치로 / 버퍼에서 메모리로> 메모리 데이터 블록 전체 전송

ㄴ블록 전송이 완료될 때 마다 인터럽트 발생

 

3. 컴퓨터 시스템 구조(Computer-System Architecture)

1)멀티 프로세서 시스템(Multiprocessor Systems)

-일반적으로 각각 단일 코어 CPU가 있는 두 개 이상의 프로세서가 존재.

-프로세서 수를 늘리면 적은 시간에 더 많은 작업을 수행할 수 있음.

-SMP(symmetric multiprocessing): 가장 일반적인 멀티프로세서 시스템

ㄴ각각 자체 CPU를 가지는 두 개의 프로세서가 일반적인 SMP 구조

ㄴ장점: 많은 프로세스 동시 실행 가능

ㄴ단점: CPU가 독립적이기 때문에 하나는 유휴상태이고 하는 과부화가 걸려 비효율적일 수 있음

-현재 멀티 프로세서는 여러 개의 컴퓨팅 코어가 단일 칩에 상주하는 다중 코어 시스템을 포함한다.

ㄴ칩 내 통신이 칩 간 통신보다 빠르므로 다중 코어 시스템은 단일 코어를 가진 여러 칩보다 효율적일 수 있다.

ㄴ다중 코어 칩은 단일 코어 칩보다 훨씬 적은 전력을 사용한다. 

 

2)컴퓨터 시스템 구성요소의 정의

-CPU: 명령을 실행하는 하드웨어

-프로세서: 하나 이상의 CPU를 포함하는 물리적 칩

-코어: CPU의 기본 계산 단위

-다중코어: 동일한 CPU에 여러 컴퓨팅 코어를 포함

-다중 처리기: 여러 프로세서를 포함

 

3)클러스터형 시스템(Clustered System)

-여러 CPU를 가진 시스템의 또 다른 유형

-둘 이상의 독자적 시스템 또는 노드를 연결하여 구성

-저장장치를 공유하고 근거리 통신망(local area network, LAN)이나 고속의 상호 연결망(예:Infiniband)으로 연결

-높은 가용성을 제공하기 위함

-하나 이상의 컴퓨터 시스템이 고장나도 서비스는 계속 제공됨

-스토리지 전용 네트워크(storage-area network,SAN)를 이용해 수 킬로미터 떨어진 클러스터 노드 뿐 아니라 한 클러스터 내에서 수천 개의 노드를 지원한다.

 

4.운영체제의 작동

-운영체제는 프로그램이 실행되는 환경을 제공

 

1) 다중 프로그래밍 & 다중 태스킹(mulriprogramming & multitasking)

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

-다중 태스킹: CPU는 여러 프로세스를 전환하며 프로세스를 실행하지만 전환이 자주 발생하여 사용자에게 빠른 응답시간을 제공한다.

 

2)듀얼모드와 멀티모드(Dual-Mode & Multimode Operation)

-운영체제와 사용자는 컴퓨터 시스템의 하드웨어, 소프트웨어 자원을 공유하기 때문에 잘못된 프로그램으로 인해 다른 프로그램과 운영체제가 잘못 실행되지 않도록 해야한다.

-사용자모드와 커널모드(수퍼바이저 모드, 시스템모드, 특권모드)로 구분한다.

-모드 비트를 이용해 커널모드는 0, 사용자모드는 1로 나타낸다.

-시스템 부트 시, 하드웨어는 커널모드에서 시작

-운영체제가 적재되면 사용자 모드에서 사용자 프로세스가 시작

-트랩이나 인터럽트가 발생할 때마다 하드웨어는 사용자모드에서 커널모드로 전환

-특권 명령어: 커널 모드로의 전환, I/O제어, 타이머관리, 인터럽트 관리

-시스템 콜은 사용자 프로그램이 자신을 대신하여 운영체제가 수행하도록 지정되어 있는 작업을 운영체제에 요청할 수 있는 방법 제공

-타이머: 사용자 프로그램이 무한 루프에 빠지거나 시스템 서비스 호출에 실패하여 제어가 운영체제로 복귀하지 않는 경우가 없도록 방지하기 위해 사용

ㄴ타이머가 인터럽트를 발생시키면 제어는 운영체제에 넘어가며 운영체제는 인터럽트를 치명적인 오류로 취급하거나 프로그램에 더 많은 시간을 줄 수 있음

 

ohrange.tistory.com

 

5. 자원관리(Resource Management)

-운영체제는 시스템의 CPU, 메모리 공간, 파일 저장 공간, I/O장치 관리해야 한다.

 

1)프로세스 관리

-프로세스는 실행 중인 프로그램

-프로세스가 종료되면 운영체제는 사용 가능한 자원을 회수한다.

-프로세스는 다음 수행할 명령을 지정하는 프로그램 카운터를 가진다.

-프로세스는 한 시스템 내의 작업의 단위이며, 시스템은 프로세스의 집합으로 구성된다.

 

2)메모리 관리

-메모리는 바이트의 배열

-각 바이트는 자신만의 주소를 가진다.

-메인 메모리는 CPU와 입출력 장치에 의해 공유되는 접근이 빠른 데이터 저장소.

-운영체제는 메모리의 어느 부분이 사용되는지, 어느 프로세스가 사용하는지 관리

-필요에 따라 메모리 공간 할당, 회수

-어떤 프로세스를 메모리에 적재하고 제거할 것인지 결정

 

3)파일 시스템 관리

-파일의 생성및 제거

-디렉터리 생성및 제거

-파일과 디렉터리를 조작하기 위한 프리미티브 제공

 

4)대용량 저장장치 관리

-마운팅, 언마운팅

-사용가능공간(free-space)의 관리

-저장장소 할당

-디스크 스케줄링

-저장장치 분할

-보호

 

5)캐시 관리

-자주 사용되는 데이터를 캐시에 저장해두고 사용함.

-특정 데이터 필요한 경우, 캐시에서 먼저 찾아본다.

 

6.보안과 보호(Security&Protection)

-보호: 프로그램, 프로세스, 사용자들의 접근을 제어하는 방법

-보안: 외부, 내부의 공격을 방어하는 것

-user IDs의 리스트를 사용한다(Windows는 security ID,SID라고 함)

 

7.가상화(Virtualization)

-운영체제가 다른 운영체제 내에서 하나의 응용처럼 수행될 수 있게 한다.

-특정 CPU를 위해 컴파일된 운영체제가 동일 CPU용의 다른 운영체제 내에서 수행된다.

-에뮬레이션은 소프트웨어로 컴퓨터 하드웨어를 시물레이션 하는 것, 소스 CPU 유형이 대상 CPU 유형과 다른 경우에 사용

 

8.분산 시스템(Distributed Systems)

-물리적으로 떨어져 있는 이기종 컴퓨터들의 집합

-분산시스템의 컴퓨터들은 사용자가 시스템 내의 다양한 자원에 접근할 수 있도록 네트워크로 연결되어 있음

-네트워크: 두 개 이상 시스템 간의 통신 경로

근거리 통신망(LAN): 한 층, 한 건물 내

광역 통신망(WAN): 건물, 도시, 국가 사이

도시권 통신망(MAN): 한 도시 내의 건물

단거리 통신망(PAN): 수 미터 짧은 거리 내

 

9.커널 자료구조(Kernel Data Structures)

-리스트: 데이터 값의 집합을 하나의 시퀀스로 표시

단일 연결 리스트: 후속항 가리킨다.

이중 연결 리스트: 자신의 앞 항이나 뒷 항 가리킨다.

원형 연결 리스트: 리스트의 마지막 항이 첫 항을 가리킨다.

-스택: 순차적 순서를 가진 자료구조로 항을 넣거나 꺼낼 때 후입선출(last in first out,LIFO)사용

-큐: 순차적 순서를 가진 자료구조로 선입선출(first in first out, FIFO)사용

-트리: 데이터의 서열 표시

일반 트리, 이진 트리, 이진 탐색 트리, 균형 이진 탐색 트리

-해시함수: 데이터를 입력받아 데이터에 산술연상 수행하여 하나의 수를 반환

해사맵: 해시 함수 이용하여 키와 값을 맵 시킨다.

-비트맵: n개의 항을 나타내는 데 사용가능한 n개의 이진 비트의 스트링이다.

0은 사용가능, 1은 불가능

 

10. Computing Environments

-모바일 컴퓨팅: 스마트폰과 태블릿 컴퓨터의 컴퓨팅 환경

-클라이언트 서버 컴퓨팅: 서버 시스템이 클라이언트 시스템이 생성한 요청을 만족시키는 배치

-피어 간 계산: 클라이언트와 서버의 구분이 없음, 모든 노드가 피어로 간주

-클라우드 컴퓨팅:계산, 저장장치, 응용을 네트워크를 통한 서비스로 제공하는 컴퓨팅, 가상화를 기반으로 한다.

-실시간 내장형 시스템: 특정 작업만 수행, 자동차 엔진, 공장용 로봇등에서 볼 수 있다.