Operating System Concepts - 1

728x90

 

운영체제(Operating system)은 컴퓨터 하드웨어를 관리하는 소프트웨어

컴퓨터 시스템 구성요소에 대한 개략적 구성도

운영체제가 할 일(What Operating Systems Do)

컴퓨터 시스템은 크게 4가지 구성요소로 구분할 수 있다. 하드웨어, 운영체제, 응용 프로그램 및 사용자

하드웨어(Computer hardware) : 중앙처리장치(CPU), 메모리 및 입출력(I/O) 장치로 구성

운영체제(Operating system) : 컴퓨터 시스템이 동작할 때 자원을 적절하게 사용할 수 있는 방법을 제공

응용 프로그램(Application programs) : 사용자의 계산 문제를 해결하기 위해 이들 자원이 어떻게 사용될지를 정의

 

운영체제는 사용의 용이성을 위해 설계 되며, 자원의 이용에는 전혀 관여하지 않는다

컴퓨터 시스템의 구성

현대적인 컴퓨터 시스템은 하나 이상의 CPU와 공통된 버스를 통해 연결된 여러 장치 컨트롤러로 구성

버스: 컴퓨터 안의 부품들 간에, 또는 컴퓨터 간에 데이터와 정보를 전송하는 통로(통신 시스템)

 

인터럽트(Interrupts)

CPU가 인터럽트 되면, CPU는 즉시 작업을 중단하고 고정된 위치로 실행을 옮김

인터럽트: 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것

인터럽트가 요청되면 인터럽트 서비스 루틴의 주소를 제공하기 위해 인터럽트 벡터가 인터럽트 요청과 함께 주어진 고유의 유일한 장치 번호로 색인됨

 

인터럽트가 발생했을 시, 처리 과정

인터럽트 요청 신호 발생 ->  프로그램 실행 중단 -> 현재 실행중인 프로그램 상태 보관 -> 인터럽트 처리 루틴 실행 -> 인터럽트 서비스 루틴 처리 -> 상태 복구 -> 중단된 프로그램 실행 재개

출력을 수행하고 있는 단일 프로세스에 대한 인터럽트 시간 일정

인터럽트 입출력 사이클 과정

장치 드라이버 입출력 시작 -> 입출력 시작 -> 입력 준비 및 출력 완료 혹은 에러가 발생시 인터럽트 신호 발생 -> CPU는 인터럽트를 수신하고 제어를 인터럽트 핸들러에게 넘김 -> 인터럽트 핸들러가 데이터를 처리, 인터럽트에서 복귀 -> CPU는 인터럽트로 중단된 작업의 처리를 재개

인터럽트-구동 방식의 입출력 사이클

 

CPU 및 인터럽트 컨트롤러 하드웨어에 의해 제공되는 3가지 기능

1. 중요한 처리중에 인터럽트 처리를 연기할 수 있어야 함

2. 장치의 적절한 인터럽트 핸들러로 효율적으로 디스패치 할 방법이 필요

3. 운영체제가 우선순위 인터럽트를 구분하고 적절하게 대응하기 위해 다단계 인터럽트 필요

 

인터럽트에는 2개의 인터럽트 요청 라인이 존재

1. 마스크 불가능 인터럽트(Nonmaskable interrupt) - 복구할 수 없는 이벤트를 위해 예약

2. 마스킹 가능 인터럽트(Maskable)

 

벡터 방식 인터럽트 기법의 목적

서비스가 필요한 장치를 결정하기 위해 인터럽트 핸들러가 가능한 모든 소스를 검색할 필요를 줄이기 위해

 

벡터 방식 인터럽트 문제를 해결하기 위한 방법 -> 인터럽트 체인 사용

 

인터럽트 우선순위 레벨

0-31 : 다양한 오류 조건

32-255 : 장치가 생성한 인터럽트를 처리하기 위해 사용

 

인터럽트는 운영체제에서 비동기 이벤트를 처리하기 위해 사용!

 

저장장치 구조

저장장치 계층 구조

입출력 구조

NVS I/O와 같은 대량 데이터 이동시 사용되는 높은 오버헤드를 해결하기 위해 직접 메모리 액세스(Direct Memory Access)가 사용

장치에 대한 버퍼 및 포인터, 입출력 카운트 세팅 후, 장치 제어기는 메모리로부터 자신의 버퍼 장치 또는 버퍼로부터 메모리로 데이터 블록 전체를 전송 -> 블록 전송이 완료될 때마다 인터럽트가 발생

 

현대 컴퓨터 작동방식

 

컴퓨터 시스템 구조

다중 처리기 시스템(Multiprocessor Systems)

다중 처리기 시스템의 장점 : 처리량 증가 -> 프로세서 수가 많을수록 더 적은 시간에 많은 작업 수행 가능

일반적인 멀티프로세서 시스템은 각 CPU 프로세서가 운영체제 기능 및 사용자 프로세스를 포함한 모든 작업을 수행하는 SMP(Symmetric multiprocessing)을 사용

대칭형 다중 처리 구조
하나의 칩에 두 개의 코어를 가지는 이중-코어 설계

L은 'Level'을 의미

L1 cache : L1 캐시는 일반적으로 CPU 칩안에 내장되어 데이터 사용/참조에 가장 먼저 사용되며, 8~64KB 정도의 용량으로 CPU가 가장 빠르게 접근, 여기서 데이터를 찾지 못하면, 이제 L2 캐시 메모리로 넘어감

L2 cache : L2 캐시 메모리는 용도와 역할은 L1 캐시와 비슷하지만 속도는 그보다 느림. 일반적으로 64KB~4MB 정도가 사용, L2 캐시는 L1 캐시보다 느리지만, 일반 메모리(RAM)보다는 빠름

 

NUMA(Non-Uniform-Memory-Access) : 모든 CPU가 공유 시스템 연결로 연결되어 모든 CPU가 하나의 주소 공간을 공유

NUMA 다중 처리 구조

장점 : CPU->로컬 메모리 액세스 속도가 빠를 뿐만 아니라 시스템 상호 연결에 대한 경합도 없음

단점 : CPU가 시스템 상호 연결을 통해 원격 메모리에 액세스 해야할 때, 지연 시간이 증가하여 성능 저하 발생

 

블레이드 서버 : 다수의 처리기 보드, 입출력 보드, 네트워킹 보드를 하나의 섀시(chassis)안에 장착하는 형태

블레이드 서버와 멀티 프로세서의 차이점 : 블레이드-처리기 보드는 독립적으로 부팅이 가능하며 자체 운영체제를 수행

 

클러스터형 시스템

클러스터형 시스템 : 둘 이상의 독자적 시스템 또는 노드들을 연결하여 구성

클러스팅은 통상 높은 가용성(Availability)을 제공하기 위해 사용 -> 클러스터 내 하나 이상의 시스템이 고장나도 서비스는 계속 제공

 

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

대칭형 클러스터링: 둘 이상의 호스트들이 응용 프로그램을 실행하고 서로를 감시 -> 가용한 하드웨어를 모두 사용

병렬 클러스터와 WAN을 이용한 클러스터링

병렬 클러스터: 여러 호스트가 공유 저장장치상의 동일한 데이터에 접근할 수 있게 하는 것

분산 잠금 관리자(Distributed lock manager, DLM): 데이터에 대한 공유 접근을 제공하기 위하여, 시스템은 접근간의 충돌이 발생하지 않는 것을 보장하기 위해 접근 제어와 잠금 기법을 제공하는 것

 

클러스터 시스템의 구조

운영체제의 작동

다중 프로그램과 멀티 태스킹(Multiprogramming and Mutltasking)

프로세스: 다중 프로그램 시스템에서 실행 중인 프로그램

다중 프로그래밍 시스템을 위한 메모리 배치

멀티태스킹: 다중 프로그래밍의 논리적 확장

멀티태스킹 시스템에서 CPU는 여러 프로세스를 전환하며 프로세스를 실행하지만 전환을 자주 하여 사용자에게 빠른 응답 시간을 제공

적절한 응답 시간을 보장하는 더 일반적인 방법 -> 가상 메모리

 

이중모드와 다중모드 운용

사용자 모드(비트 1으로 나타냄)

커널 모드(비트 0으로 나타냄)

 

사용자 모드에서 커널 모드로의 전환

시스템 부팅 시, 하드웨어는 커널모드에서 시작 -> 운영체제가 적재 -> 사용자 모드에서 사용자 프로세스가 시작 -> 트랩이나 인터럽트가 발생할 때마다, 하드웨어는 사용자 모드->커널 모드로 전환(즉, 비트를 0으로 변경)

 

트랩은 보통 trap 명령어를 통해 수행되지만, 몇몇 시스템은 syscall 이라는 특정 명령어를 가지기도 함

 

시스템 콜이 수행될 때, 시스템 콜은 하드웨어에 의해 하나의 소프트웨어 인터럽트로 취급

 

자원 관리

프로세스 관리

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

 

운영체제가 프로세스 관리와 연관해 책임지는 활동들

1. 사용자 프로세스와 시스템 프로세스의 생성 및 제거

2. CPU에 프로세스 및 스레드 스케줄

3. 프로세스 일시 중지 및 재수행

4. 프로세스 동기화 및 통신을 위한 기법 제공

 

------------------------------------------

 

프로그램이 수행되기 위해서는 반드시 절대 주소로 매핑되고 메모리에 적재되어야 함

프로그램을 수행하면서, 절대 주소를 생성하고 메모리의 프로그램 명령어와 데이터에 접근

 

파일 시스템 관리

운영체제는 저장장치의 물리적 특성을 추상화하여 논리적인 저장 단위 '파일'을 정의

운영체제는 파일을 물리적 매체로 매핑, 저장장치를 통해 파일에 접근

파일은 사용하기 쉽도록 디렉터리들로 구성

캐시 관리

캐시(Cache): 속도가 빠른 저장 장치와 느린 저장 장치 사이에 속도 차이에 따른 병목현상을 줄이기 위한 범용 메모리

 

정수 A를 디스크 -> 레지스터로 이동하는 과정

 

캐시 일관성 문제: A의 복사본이 동시에 여러 캐시에 존재할 수 있는데, 한 캐시에 있는 A의 값이 갱신될 경우 A가 존재하는 모든 캐시에 즉각적으로 반영되어야 함

 

보안과 보호

보호(Protection)

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

- 시행될 제어에 대한 명세와 이들을 강제 시행하는 방법을 규정하는 수단을 반드시 제공해야만 함

 

프로세스는 종료되거나 특권(Privilege)를 해제하기 전까지 유효 사용자 식별자(Effective user ID)를 이용하여 수행

 

가상화

가상화: 개별 환경이 자신만의 컴퓨터에서 실행되고 있다는 환상을 만들 수 있는 기술

(a) 하나의 운영체제 (b) 3개의 가상 머신을 실행시키는 컴퓨터

 

커널 자료구조

리스트: 데이터 값들의 집단을 하나의 시퀀스로 표기

연결리스트

-단일 연결

-이중 연결

 

스택: 순차적 순서를 가진 자료구조, 후입선출(Last In First Out, LIFO) 구조

스택에 값을 넣거나 빼는 일은 각각 Push와 pop이라고 함

 

큐: 순차 순서의 자료구조로 선입선출(First In First Out, FIFO) 구조

 

트리

트리: 데이터의 서열을 표시하는데 사용 가능한 자료구조이며 부모 - 자식 관계로 연결됨

트리 종류

- 일반 트리 : 부모노드는 임의의 수의 자식을 가질 수 있음

- 이진 트리: 부모노드는 최대 2개의 자식 노드를 가질 수 있음(좌측, 우측)

 

균형 이진 탐색 트리  - n개의 항을 갖는 트리는 최대 깊이가 log n, 최악의 경우 성능 O(log n)을 보장

해시 함수와 맵

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

 

해시 함수의 단점: 두 개의 서로 다른 입력이 하나의 동일한 출력 값을 가질 수 있으며 이를 해시 충돌이라고 함

해시 함수의 다른 용도: 해시 맵을 구현하는 일이며, 해시 맵은 해시 함수를 사용하여 [키:값]을 연관(또는 맵) 시킴

 

비트맵

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

계산 환경

클라이언트 서버 컴퓨팅(Client-Server Computing)

현대 네트워크 구조는 서버 시스템클라이언트 시스템이 생성한 요청을 만족시키는 형태 -> 클라이언트-서버 시스템

 

계산-서버 시스템: 클라이언트가 작업을 요청할 인터페이스를 제공

파일-서버 시스템: 클라이언트가 파일을 생성, 갱신, 읽기 및 제거할 수 있는 파일 시스템 인터페이스 제공

클라이언트 - 서버 시스템의 일반적인 구조

 

피아 간 계산(Peer-to-Peer Computing)

분산 시스템의 다른 구조는 피어 간 시스템(Peer-to-Peer, P2P)

클라이언트와 서버가 서로 구별되어 있지 않으며, 시스템 상의 모든 노드가 피어로 간주

각 피어는 서비스를 요청하는지 제공하는지에 따라 서버 및 클라이언트로 동작

피어 간 시스템

 

클라우드 컴퓨팅

클라우드 컴퓨팅: 네트워크를 통한 서비스로 제공하는 계산 유형

 

클라우드 컴퓨팅 종류

- 공중 클라우드

- 사유 클라우드

- 혼합형 클라우드

- 소프트웨어 서비스(Software as as service, SaaS)

- 플랫폼 서비스(Platform as a service, PaaS)

- 하부구조 서비스(Infrastructure as a service, IaaS)

 

클라우드 컴퓨팅

 

참조

https://ko.wikipedia.org/wiki/%EB%B2%84%EC%8A%A4_(%EC%BB%B4%ED%93%A8%ED%8C%85) 

 

버스 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

4 PCI 익스프레스 버스 카드 슬롯들(위에서부터 아래 두 번째까지: x4, x16, x1, x16) 및 32비트 PCI 버스 카드 슬롯 (맨 아래) 버스(영어: bus[1], 문화어: 모선)는 컴퓨터 안의 부품들 간에, 또는 컴퓨터 간

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8

 

인터럽트 - 위키백과, 우리 모두의 백과사전

마이크로프로세서에서 인터럽트(interrupt, 문화어: 중단, 새치기)란 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경

ko.wikipedia.org

https://hombody.tistory.com/237

 

[OS] - 인터럽트(Interrupt) / 입출력(I/O)

인터럽트(Interrupt) CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 장치의 요청이나 예외상황이 발생하여 처리가 필요할 경우 CPU에게 알려 처리할 수 있도록 하는 것 인터럽트의 종류 외부

hombody.tistory.com

https://12bme.tistory.com/402

 

[엔지니어링] CPU와 캐시 (L1/L2/L3 캐시..)

CPU 캐시 메모리는 어떤 역할을 하는가? http://it.donga.com/215/ CPU 사양을 보면 L1 캐시 / L2 캐시 등이 존재한다. 이 캐시 메모리에 따라서 CPU 성능의 우열을 판가름할 수도 있다. 캐시 메모리가 많으면

12bme.tistory.com

 

728x90