본문 바로가기

전공 테트리스/운영체제

[운영체제] 1. Introduction

 

 

운영체제 (OS, Operating System)

 

운영체제 종류

: Windows, Android, macOS, ios, Linux

 

 

컴퓨터 시스템 구성요소

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

 

운영체제는 정부와 같음. (자체적으로 유용한 기능 수행 x, 작업할 수 있는 환경 제공)

 

 

1. User view

- 시스템 환경에 따른 다양한 요구사항

 

1) 일반 사용자 (PC)

- 편리함 및 좋은 성능

- 자원 이용률에는 무관심

 

2) 메인프레임 또는 미니컴퓨터에 연결된 터미널 사용자

- 자원 이용 극대화

 

3) 워크스테이션-서버 사용자

- 자원이용과 개인의 사용 편이성의 적절한 조화

 

4) 휴대용 컴퓨터

- 전력소모를 줄이고 사용의 편의성

 

5) 임베디드 컴퓨터 (장치에 내장된 컴퓨터 또는 자동차에서 사용되는 일부 컴퓨터)

- 사용자 관여 불필요

 

 

 

2. System view

 

1) 자원 관리

- 효율과 공정한 자원 사용을 위한 결정

* 컴퓨터 입장에서 os 는 하드웨어와 가장 밀접한 프로그램 -> 따라서 자원할당자

 

2) 제어 프로그램

- 컴퓨터의 잘못된 사용이나 부적합한 사용을 방지

- 다양한 입출력 장치와 프로그램 동작 제어 필요

 

 

 

3. OS 정의

컴퓨터 사용자와 하드웨어 사이의 중개자 역할

 

운영체제 목표

사용자 관점) 편리한 사용

시스템 관점) 하드웨어의 효율적 사용

 

>> 컴퓨터 하드웨어를 효율적으로 관리하여 성능을 향상시키고, 사용자에게 편의를 제공하는 프로그램

 

 

운영체제 구성

- 커널 : 운영체제의 핵심. 대부분의 기능을 담당

- 시스템 프로그램 :  작업관리자와 가이 프로그램에 깊게 관여 가능한 

- bundle : 메모장과 같은 프로그램들

 

 

4. 컴퓨터 시스템 구성 (Organization)

 

- 사용자

- 응용프로그램

- 운영체제; 커널, 시스템프로그램, bundle

- 하드웨어; 기본적인 컴퓨터 리소스, i/o 장치, cpu, 메모리

 

 

 

5. 컴퓨터 시스템 작동 (operation)

 

- 하나 이상의 cpu

- 장치 제어기(장치관리자); 공유 메모리에 접근하기 위해 일반버스에 연결됨

 

 

컴퓨터시스템

: 하나 이상의 cpu와, 구성요소와 공유메모리 사이의 액세스를 제공하는 공통버스를 통해 연결된 여러 장치 컨트롤러로 구성. 각 장치 컨트롤러는 특정 유형의 장치를 담당함. 컨트롤러의 유형에 따라 둘 이상의 장치가 연결되기도 함. 일반적으로 각 장치 컨트롤러마다 장치드라이버를 가짐. 

-> 장치 컨트롤러의 작동을 잘 알고, 나머지 운영체제에 장치에 대한 일관된 인터페이스를 제공한다.

 

컴퓨터가 시작하기위해 

<Boot Loader (Bootstrap program)>

- 펌웨어라고 불림

- 통상 ROM(Read Only Memory) 또는 EEPROM(Electrically erasable programmable ROM)에 저장

- 운영체제를 메모리에 올려서 가동시키는 역할을 함

 

* ROM : 비휘발성 메모리. read만 가능

 

1) 시스템의 모든 구성요소 초기화 (POST; Power On Self Test)

2) 운영체제 커널을 메모리에 적재시킨 후, 커널을 실행(init)

3) 시스템은 완전히 부팅된 상태에서 event 발생 대기 

   - 하드웨어 또는 소프트웨어에서 인터럽트 발생 (인터럽트 driven 방식)

 

* 부트로더가 실행되고 init 프로세스를 메모리에 로드 (= 운영체제 코어인 커널을 메모리에 올렸다는 의미)

운영체제가 실행되도록 init 프로세스 주소를 가지고 있음. init 프로세스가 실행이 되면 자가배양이 되면서, 운영체제에 필요한 메모리에 데이터가 쌓임. 

 

 

 

6. 저장장치 구조 (Storage Structure)

 

- cpu는 오직 메모리에서만 명령어를 load

* 폰노이만 구조; 모든 프로그램은 메모리에 올라가야 실행 가능

 

1) 메인메모리; RAM(Random Access Memory)

- cpu가 직접 접근할 수 있는 유일한 대용량 저장장치

- 반도체로 구현(DRAM)

- Arrays of words (storage units)       // 메모리는 바이트의 대용량 배열을, 바이트는 주소를 가짐

- load와 save의 연속

- 보통 휘발성, 제한적 크기

 

* load : 메모리 -> cpu

* save : cpu -> 메모리

 

 

2) 보조저장장치

- 대용량 비휘발성 저장용량 - 메인메모리의 확장

- 하드디스크 (HDD)

- 반도체디스크(SSD. solid-state disks)

: 고속 입출력 비휘발성 저장 매체

외부 충격에 강함, 작고 가벼움

 

 

저장장치 시스템은 계층 구조를 형성함

- 속도, 비용, 크기, 휘발성 여부

 

레지스터 < 캐시 < 메인메모리(dram) < ssd (반도체디스크) < hdd (하드디스크) < optical disk < magnetic tapes

 

* 레지스터 : cpu 내부에 존재함

* 캐시 : cpu와 메모리 사이에 존재. 자주 쓰이는 명령어 저장하여 빠른 접근을 용이하게 함. 4레벨까지 있음

 

 

 

 

7. I/O 구조 (Structure)

 

- 운영체제에 많은 부분이 입출력 관리에 관한 부분임

 

- 컴퓨터 시스템은 cpu와 장치관리자로 구성됨

* 장치관리자

: 레지스터, local buffer storage,  control unit

  주변 장치들 간의 데이터 전송을 담당   // 일반 버스와 연결되어 이를 통해 데이터를 주고받음.

 

- 운영체제는 각 장치관리자를 위한 장치드라이버를 가짐

* 장치드라이버

: 장치제어기를 이해하고, 장치와 os 사이에 유일한 인터페이스를 제공

  다양한 입출력 장치마다 각각 장치드라이버가 커널에 통합되어 실행됨 

(운영체제가 실행 중이면 커널은 반드시 메모리에 있음. 그 안에 장치드라이버가 있는 것임. 

즉, 메모리(ram) > 커널 > 장치드라이버)

 

I/O 장치 동작 예시

- 키보드가 눌렸다는 신호가 들어오면,

1) 장치드라이버가 장치관리자 레지스터에 로드

2) 장치관리자는 이 내용을 검사하여 '키보드에서 문자를 읽어오는' 작업을 결정함

3) 장치관리자는 장치에서 로컬 버퍼로 데이터를 전송

4) 전송 완료 후, 장치관리자는 장치드라이버에게 작업완료를 알림

5) 장치드라이버는 운영체제에게 데이터나 데이터 주소를 반환함

 

 

 

8. 인터럽트

- 운영체제는 인터럽트에 의해 동작함

* 인터럽트 driven (= event driven) - 입출력 장치 동작, 프로그램 실행 시

 

 

- 인터럽트 발생 시, 하던 작업 멈추고 처리함

# 인터럽트 처리 전 : 복귀 주소, 복귀 전 cpu상태 저장

# 인터럽트 처리 : 인터럽트 서비스 루틴에게 제어권이 넘어감

-> 인터럽트 벡터 테이블 (IVT) in cpu (내의 레지스터)

-> 인터럽트 서비스 루틴 ISR in ram (내의 커널)

# 인터럽트 처리 후 : 이전 상태 복원

 

 

- 인터럽트 종류 구분 : 어디서 발생했는가? cpu안 / 외부 혹은 sw

 

 

 

## cpu 외부 => 하드웨어 인터럽트 (외부 인터럽트)

: cpu 외부의 디스크 컨트롤러나 주변장치로부터 요구되는 것

- 운영체제의 처리를 요하는 상황을 알리기 위한 전기적인 신호

- PIC (Programmable Interrupt Controller); 장치에서 요청되는 인터럽트를 관리 (수용여부, 우선순위 등)

 

1) 기계착오 인터럽트 

- cpu 의 기능적인 오류

 

2) 외부 인터럽트

 - 오퍼레이터나 타이머에 의해 의도적으로 프로그램이 중단된 경우

 

3) 입출력 인터럽트

- 입출력의 종료나 입출력이 오류에 의해 cpu의 기능이 요청되는 경우

 

4) 정전,전원 이상 인터럽트

 

 

## 소프트웨어 인터럽트 (내부 인터럽트)

: cpu 내부에서 발생하는 신호

 

1) 프로그램 검사 인터럽트

- 프로그램 실행 중 프로그램 상의 오류나 이벤트를 알리기 위해 발생

예) 나눗셈에서 0으로 나누고자 하는 경우

오버플로우, 언더플로우

부당한 메모리 주소에 접근

 

2) 시스템콜 (인터럽트)

- 사용자가 프로그램을 실행시키거나 시스템 호출

 

 

 

9. 컴퓨터 시스템 아키텍쳐

 

1) 싱글 프로세서

- 대부분의 시스템은 하나의 범용 cpu를 가짐

 

 

2) 멀티프로세서(다중처리기) 시스템의 사용과 중요성 증가

- 병렬시스템, 강결합 시스템

- 장점 : 처리량 증가, 신뢰성 증가-결함허용, 경제의 규모

- 2가지 형태

> 비대칭 다중처리기

- 특별한 임무 수행

- master~slave 관계

> 대칭 다중처리기

- 공통임무 수행

 

3) 대칭 다중처리기 구조

: 가장 일반적인 다중처리기 구조 -> 각 피러 운영체제 기능 및 사용자 프로세스를 포함한 모든 작업 수행

: 각각 단일코더 cpu 가 있는 두 개 이상의 프로세서

 

장점: 많은 프로세스를 동시에 실행 가능, 다양한 프로세서 간에 동적으로 자원 공유 가능

단점 : cpu가 독립적이라 하나는 유휴 상태이고 다른 하나는 과부하가 걸리면 비효율적

 

 

4) 멀티코어 디자인

- 최근 경향의 칩 상태

- 단일 코어를 여러 개 가진 칩보다 효율적

 

장점: 단일코어 칩보다 훨씬 적은 전력 사용해서 모바일 장치에 중요함

 

 

 

5) 클러스터 시스템

- 둘 이상의 독자적 시스템 또는 노드들을 연결       //다중처리기와 차이점

- 보통 LAN을 통하여 저장장치 공유

- 실패해도 지속 가능한 고가용 서비스 제공

> 비대칭 클러스터링

> 대칭 클러스터링

- 일부 클러스터는 고성능 컴퓨팅 환경을 제공

 (응용프로그램은 병렬처리가 가능하도록 작성되어야 함. )

// 한 클러스터가 네트워크로 연결된 다수의 컴퓨터 시스템으로 구성되므로 고성능 컴퓨팅 환경 필요

 

 

10. OS 구조 (Structure)

1) 다중프로그래밍

- cpu가 항상 한 작업을 수행할 수 있도록 함.

> cpu 이용률 향상 

- 동시에 여러 작업을 메모리에 적재

- 운영체제는 실행할 작업을 선택 및 실행

- 실행 중인 작업이 무언가를 기다려야 한다면 운영체제는 다른 작업으로 전환

 

 

 

2) 시분할 운영체제 (멀티테스킹)

- cpu 사용시간을 아주 작게 나누어 여러 프로그램을 실행

- 대화식 컴퓨팅 환경을 기반으로 함
 (응답시간이 1초 미만이어야 함)

 

- 메인프레임(서버) - 여러 클라이언트 구조

(마치 혼자 시스템을 이용하는 것처럼 느끼도록 빠르게 사용자 전환

 

- 오늘날 컴퓨터 시스템에서 시분할 운영체제에 필요한 기술들

(cpu 스케줄링, 스와핑, 가상메모리)

* cpu 스케줄링 : 여러 프로세스가 동시에 실행할 준비가 되면 시스템은 다음에 실행할 프로세스 선택

 

 

 

11. OS 작동 (Operation)

 

- 현대 컴퓨터 시스템의 고려 사항 : 하드웨어 및 소프트웨어 리소스 공유는 한 프로세스이 오류가 다른 많은 프로세스가 영향받을 수도 있음. 따라서 신뢰성 있는 시스템을 위해서 운영체제는 잘못된 프로그램으로 인해 다른 프로그램이 악영향을 받지 않도록 설계해야 함.

 

1) 이중모드

- 유저모드, 커널모드(수퍼바이저, 시스템, previlege 모드)

- 모드 비트(cpu 내 레지스터 값)

* 시스템이 사용자코드(1) 혹은 커널코드(0)를 실행하고 있는지 구분

* 특권 명령어는 커널모드에서만 실행 가능

ex) In, Out, SET_TIMER, HALT, STOP, RESET

 

 

시스템 부트 시 커널모드에서 시작

OS load

사용자 모드에서 사용자 프로세스 시작

트랩이나 인터럽트 발생 시, 사용자모드 -> 커널모드 전환

 

 

 

2) 타이머

- CPU 보호 : 운영체제가 cpu 제어를 유지하도록 보호

무한루프에 빠진 사용자 프로그램

시스템콜에 실패한 사용자 프로그램

-> 한 프로그램에 대한 cpu 독점 방지

 

운영체제가 타이머를 설정 (커널모드)

- 고정주기 / 가변주기

 

 

 

 

11. 프로세스 관리

 

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

- 시스템 안에서 작업의 단위

- 프로그램 = 수동적인 개체, 프로세스 = 능동적인 개체

 

프로세스는 자신의 업무를 수행하기 위해 자원이 필요

-> cpu, 메모리, i/o, 파일

-> 초기화를 위한 데이터 

 

프로세스는 명령어를 한 번에 하나씩 완료될 때까지 순차적으로 실행함

 

프로세스가 종료될 때에는 재사용이 가능한 모든 자원을 반환함

 

 

운영체제의 프로세스 관리

- cpu 사용을 위한 프로세스 또는 쓰레드 스케줄링

- 사용자와 시스템 프로세스를 생성하고 제거

- 프로세스 일시중지 및 다시 시작

- 프로세스 간 동기화할 수 있는 기법 제공

- 프로세스 간 통신할 수 있는 기법 제공

- 교착상태를 처리하기 위한 기법 제공

 

 

 

12. 메모리 관리

메모리는 바이트의 대용량 배열, 각 바이트는 주소를 가짐

메모리는 cpu와 i/o장치가 빠르게 접근할 수 있는 저장소

프로그램 실행에 필요한 데이터 전체 또는 일부가 메모리에 있어야 함.

 

- 운영체제의 메모리 관리

> 프로세스에 의해 사용 중인 메모리 영역 추적

> 어느 프로세스(또는 일부)와 데이터를 메모리에 적재하거나 내보낼 지 결정

> 필요에 따라 메모리를 할당하거나 반환

 

메모리 관리 기법은 하드웨어 설계에 좌우됨

 

13. 저장장치 관리

os는 저장장치의 물리적인 특성을 추상화하여 논리적인 저장단위인 파일을 정의

- 파일은 파일 생성자에 의해 정의된 관련 정보의 집합체

- 파일은 사용자 편의를 위해 디렉토리 단위로 구성됨

 

 

각 저장매체는 자신의 독특한 특성이 존재함

- 자기디스크, 광학디스크, usb 메모리 

- 접근 속도, 데이터 전송률, 접근 방식(순차 또는 임의) 등

 

운영체제의 파일시스템 관리

- 파일과 디렉터리 생성과 삭제

- 파일과 디렉터리를 조작하기 위한 기본 기능 제공

- 파일을 보조 저장장치에 매핑

- 신뢰할 수 있는 비휘발성 저장장치에 파일 백업하기

 

 

 

주기억장치의 한계

- 적은 용량, 휘발성

- 컴퓨터 시스템의 모든 프로그램은 비휘발성 대용량 저장장치에 저장

 

 

운영체제의 대용량 저장장치 관리

- 빈 공간 관리

- 저장공간 할당

- 디스크 스케줄링

 

 

3차 저장장치

- 광학 저장장치(optical), 자기 테이프(magnetic tape), USB 등

> WORM (write-once, read-many-times) and RW(read-write)

- mount와 unmount 관리

// 프로세스의 배타적 사용을 위한 장치의 할당과 반환. 보조저장장치로부터 3차 저장장치로 데이터 이주

 

더보기


컴퓨터 시스템의 편리한 사용을 위해 운영체제는 정보저장장치에 대한 균일한 논리적 관점을 제공한다. 운영체제는 저장장치의 물리적 특성을 추상화하여 논리적인 저장 단위인 파일을 정의한다. 운영체제는 파일을 물리적 매체로 매핑하여, 저장장치를 통해 이들 파일에 접근한다.

파일 관리는 가장 눈에 띄는 운영체제 구성 요소 중의 하나이다. 컴퓨터는 여러 유형의 물리적 매체에 정보를 저장할 수 있다. 2차 저장장치가 가장 일반적이지만 3차 저장장치도 가능하다. 이러한 각 매체는 자신의 특성과 물리적 구성을 가지고 있다. 대부분의 매체는 디스크 드라이브와 같은 장치에 의해 제어되며, 이들 장치 또한 자신의 독특한 특성이 있다. 이러한 속성에는 접근 속도, 용량, 데이터 전송률, 그리고 접근 방식(순차 또는 임의) 등이 있다.

운영체제는 대량 저장 매체와 그것을 제어하는 장치를 관리함으로써 파일의 추상적인 개념을 구현한다. 또한 파일은 사용하기 쉽도록 통상 디렉터리들로 구성된다. 마지막으로, 다수의 사용자가 파일에 접근하려고 할 때는 누구에 의해서, 그리고 어떤 방법으로 파일이 접근되어야 하는가를 통제하는 것이 바람직하다.

앞에서 본 것처럼 컴퓨터 시스템은 메인 메모리를 백업하기 위해 보조저장장치를 제공해야 한다. 대부분의 최신 컴퓨터 시스템은 HDD 와 NVM 장치를 프로그램과 데이터 모두에 대한 주요 온라인 저장 매체로 사용한다. 컴파일러, 웹 브라우저, 워드 프로세서 및 게임을 포함한 대부분은 메모리에 적재될 때까지 이러한 장치에 저장된다. 그런 다음 프로그램은 장치를 처리 소스 및 대상으로 모두 사용한다. 따라서, 보조저장장치의 적절한 관리는 컴퓨터 시스템에서 가장 중요하다. 운영체제는 보조저장장치 관리와 관련하여 다음 활동을 담당한다.

  • 마운팅과 언마운팅
  • 사용가능공간의 관리
  • 저장장소 할당
  • 디스크 스케줄링
  • 저장장치 분할
  • 보호

보조저장장치는 매우 빈번하고 폭넓게 사용되므로 효율적으로 사용해야 한다. 컴퓨터의 전체 동작 속도는 보조저장장치 서브시스템과 그것을 조작하는 알고리즘의 속도에 의해 결정될 수 있다.

동시에 보조저장장치보다 더 느리고 비용은 적게 들고 때로는 용량이 더 큰 장치를 필요로 하는 경우도 많다. 디스크 데이터의 백업, 가끔 쓰이는 데이터 및 장기간 보존이 필요한 데이터를 저장하는 것이 대표적인 예이다. 자기 테이프 드라이브와 그 테이프, CD와 DVD 및 블루레이 드라이브와 플래터들은 전형적인 3차 저장장치의 예이다.

3차 저장장치는 시스템 성능에는 중요하지 않지만 운영체제에 의해 관리되어야만 한다. 어떤 운영체제들은 이 역할을 직접 수행하며 다른 운영체제들은 이 역할을 응용프로그램에게 맡기기도 한다. 운영체제가 제공해야 할 기능에는 마운트와 언마운트 기능, 프로세스의 배타적 사용을 위한 장치의 할당과 반환 그리고 보조저장장치로부터 3차 저장장치로의 데이터 이주 등이 포함된다.

 

 

14. 보호와 보안

 

 

보호 (protection)

- 운영체제에서 정의한 리소스에 프로세스 또는 사용자가 액세스하는 것을 제어하는 모든 메커니즘

- 메모리 주소 지정 하드웨어, 타이머(cpu 제어 보호)

 

 

보안 (Security)

- 내부 및 외부 공격에 대한 시스템 방어

- 서비스 거부 공격, 웜, 바이러스, 신분 도용, 서비스 도용 등

 

 

운영체제의 보호와 보안 기법

- 사용자 식별자 리스트 관리 (사용자 아이디, 보안 아이디)

- 유닉스 경우, 파일마다 권한 허용 범위를 설정할 수 있음. 

> 그룹 식별자를 통해 사용자 집합을 정의하고 관리할 수 있음

 

 

 

 

15. 분산 시스템

- 네트워크로 연결된 (아마도) 이기종 시스템의 집합

계산 능력, 기능, 데이터 가용성, 신뢰성 증가

분산시스템은 네트워크 의존이 매우 높음

# 근거리 통신망(LAN)

# 광역 네트워크 (WAN)

# 대도시 지역 네트워크 (MAN. 매트로폴리탄)

# 개인 영역 네트워크 (PAN)

 

- TCP/IP가 가장 일반적인 네트워크

> 대부분의 운영체제가 이 프로토콜을 지원

 

 

네트워크 운영체제

- 시스템끼리 파일을 공유하고, 메시지를 교환할 수 있는 운영체제

- 단일시스템인 듯한 환상

 

 

 

16. Special-Purpose Systems

 

1) Real-Time 임베디드 시스템

 

-  특정 영역에 맞춰진 제한적이고 특화된 작업을 하는 시스템

ex) 자동차, 로봇, 전자제품

(인터페이스가 거의 없거나 전혀 없을 수 있음. )

(센서와 하드웨어가 운영체제에 의해 제한된 작업만 진행)

 

- 현재는 네트워크와 연결되어 더 확장된 기능 제공

ex) IoT (smart homem smart city, smart form), 자율주행 자동차

 

- 거의 실시간 운영체제를 실행

(엄격한(정해진)시간 제약, 지켜지지 않으면 시스템 실패)

(빠른 응답 속도를 요구함)

 

 

 

2) handheld 시스템

- 휴대용 스마트폰, 태블릿 등 특수 목적의 임베디드 운영체제 사용

- 이 기기들과 전통적인 컴퓨터 사이의 기능적인 차이는?

a. 장치들의 제한적인 크기 -> 제한적인 장치성능

(ex.  작은 용량의 메모리: 메모리 관리 효율

        cpu 속도 : 전력 관리

        작은 디스플레이 : 입력(가상키보드), 출력(인터페이스) 고려 )

b. 기존  pc에는 없는 다양한 장치로 인한 다양한 기능

         (GPS, 가속도계, 자이로스코프 등, 위치서비스를 이용한 앱, 내비게이션, 증강현실 앱 등)

c. 네트워크 기능 필수

    ( 블루투스, IEEE 802.11 무선 또는 셀룰러 데이터 네트워크 사용)

 

 

 

17. 컴퓨팅 환경

 

 

1) 클라이언트-서버 컴퓨팅

 

- 분산시스템의 특화된 형태

- 클라이언트가 생성한 요청에 서버

컴퓨터-서버 시스템 : 클라이언트에게 서비스를 요청하기 위한 인터페이스를 제공

> 파일-서버 시스템 : 클라이언트가 파일을 생성, 갱신, 읽기, 삭제 할 수 있는 인터페이스를 요청 (예 : 웹 서버)

 

 

 

2) peer to peer 컴퓨팅

 

- 분산시스템의 또 다른 형태

- p2p는 클라이언트와 서버를 구분하지 않음

- 대신 모든 노드는 peer

- 각 peer는 클라이언트, 서버, 또는 두 개의 역할을 함

 

* 클라이언트-서버 시스템에서는 서버가 병목으로 작동함 

<-> p2p 시스템에서는 여러 노드에게 서비스 제공 가능함

 

'전공 테트리스 > 운영체제' 카테고리의 다른 글

[운영체제] 2. OS Structures  (1) 2024.10.08