티스토리 뷰

1. What Operating Systems Do

운영체제(Operating System)는 컴퓨터의 하드웨어를 관리하고, 하드웨어와 소프트웨어, 사용자를 매개하는 프로그램이다. 커널(Kernel)은 운영체제의 핵심이며, 실체다. 운영체제는 커널과 커널 모듈(Kernel module)들로 구성되는데, 커널이 운영체제의 핵심이다보니 일반적으로 운영체제와 커널은 동일시 된다.

User View

사용자 관점에서 운영체제는 사용자의 목적(개인독점, 다수 사용자) 에 따라 컴퓨터 사용이 편리하게 도와주는 인터페이스 역할을 한다.

System View

시스템에게 운영체제는 자원 할당자(Resource allocator)다. 컴퓨터 시스템은 CPU 시간, 메모리 공간, 파일 저장소 공간, 입출력 장치 등 다양한 문제를 해결해야 한다. 운영체제는 이러한 컴퓨터 자원들을 관리하는 제어 프로그램(Control program)으로서 동작한다.

2. Computer-System Organization

현대의 일반적인 컴퓨터 시스템은 여러개의 CPU와 장치 컨트롤러(Device controllers)로 구성되어 있다. 그리고 이들은 공통버스(Commmon bus)로 이어져 메모리를 공유한다.

Moore's law(무어의 법칙)

24개월 마다 컴퓨터 성능이 2배로 늘어난다는 법칙(최근에 깨짐)

Computer Startup

컴퓨터를 켜면 EEP-ROM 에 저장되어 있는, 부트스트랩(Bootstrap program)이라는 초기화 프로그램이 실행된다. 부트스트랩 프로그램은 시스템을 초기화(init)하고 운영체제를 실행한다. 시스템이 완전히 부팅되면, 운영체제는 이벤트가 발생하기를 기다리게 된다.

Computer-System Operation

입출력 장치, 하드웨어는 시스템 버스를 통해 CPU 에 신호를 통하여, 그리고, 소프트웨어는 system call을 통하여 CPU에게 인터럽트(Interrupt)를 발생시킬 수 있다.

Common Functions of Interrupts

보통 컴퓨터는 여러 작업을 동시에 처리하는데, 인터럽트가 발생하면 운영체제는 이를 처리하기 위해 실행중이던 작업을 멈추고 인터럽트를 처리할 수 있는 서비스를 호출해야 한다. 이 위치는 인터럽트 벡터(Interrupt vector)에 저장되어 있다. 인터럽트 벡터는 인터럽트를 처리할 수 있는 서비스 루틴(Service routine)들의 주소가 모여있는 공간으로, 파일 읽기/쓰기와 같은 중요한 동작들이 하드코딩되어 있다.

Interrupt Handling

현대 운영체제들은 대부분 인터럽트가 발생하기 전까지 CPU는 대기상태에 머무는 인터럽트 주도적(Interrupt driven)이다. 반면 폴링(Polling)의 경우 주기적으로 이벤트를 감시해 처리 루틴을 실행한다.

Storage Structure

휘발성(RAM,cache,register) + 비휘발성(SSD,HDD) 으로 구성

휘발성 특징 : 작고 빠르지만 비싸다.

비휘발성 특징 : 크고 상대적으로 느리지만, 싸다.

I/O Structure

장치제어기(SCSI)와 장치와 운영체제를 연결해주는 디바이스 드라이버로 운영한다.

입출력의 높은 오버헤드 때문에 CPU 개입없이 DMA(직접 메모리 접근) 해주는 장치가 사용 되기도 한다.

Direct Memory Access Structure

과거에는 장치 데이터를 처리하기 위해 CPU를 거쳐 메모리에 로드하는 방식을 사용했으나, CPU 자원이 너무 많이 소모되기 때문에 이젠 DMA(Direct Memory Access)를 사용한다. DMA는 장치와 메모리를 직접 연결하는 방식으로, 버스가 지원하는 기능이다. 메모리의 일정 부분은 DMA에 사용될 영역으로 지정되며, DMA를 제어하는 컨트롤러는 DMA 컨트롤러라고 부른다.

3. Computer-System Architecture

현대 컴퓨터 시스템은 기본적으로 폰 노이만 구조를 따른다.

Single-Processor Systems

과거 대부분의 컴퓨터는 싱글 프로세서를 사용했다. 싱글 프로세서 컴퓨터에는 하나의 메인 CPU만 탑재되며, 장치에 따라 특별한 목적을 가진 프로세서가 들어갔다. 가령 디스크 프로세서는 디스크 연산만 수행하고, 키보드 프로세서는 키보드 연산만 수행하는 식이다.

Multiprocessor Systems

비대칭 멀티프로세싱 방법 : 보스 프로세서(Boss processor)가 다른 프로세서를 관리하여, 부하 분산(Loadbalancing)을 효율적으로 하는 방법.

대칭 멀티프로세싱방법(SMP) : 동등한 관계에서 하나의 일을 분산해서 처리한다. 에러가 생길 시 에는, 해당 프로세서의 일을 다른 프로세서가 나눠 가진다.

클러스터 시스템 : 여러 시스템, 서버를 클러스터링 하여 하나의 일을 처리한다. cpu가 아니고, 시스템 단위.

4. Operating System Structure

운영체제의 가장 중요한 부분 중 하나는 멀티프로그램(Multiprogram) 능력이다. 멀티프로그래밍(Multiprogramming)은 여러 프로그램을 메모리에 로드해 두고 한 프로세스가 대기 상태가 되면 다른 프로세스의 작업을 수행하는 시스템이다.

여기서 더 확장된 시스템이 시분할(Time sharing) 시스템이다. 다른 말로는 멀티태스킹(Multitasking)이라고도 부른다. 이는 프로세스마다 작업 시간을 정해두고 번갈아가면서 작업하는 방식이다. 프로세스들이 빠르게 번갈아가며 수행되면 사용자 입장에서는 마치 동시에 작동하는 것처럼 보이게 된다. 시분할은 굉장히 복잡하므로, 이를 처리하는 방법은 후에 자세하게 다루도록 한다.(스왑인,아웃,가상메모리,데드락)

Operating-System Operations

대부분의 운영체제는 인터럽트 주도적이다. 인터럽트가 없다면 시스템은 조용히 인터럽트를 기다린다. 만약 사용자의 프로그램이 멋대로 하드웨어에 접근해 인터럽트를 보낸다면 큰 문제가 생기길 것이다.

Dual-Mode and Multimode Operation

운영체제는 사용자 프로그램이 함부로 시스템에 접근하지 못하도록 모드(Modes)를 나눠둔다. 유저 모드(User mode)와 커널 모드(Kernel mode)가 그것이다. 하드웨어는 커널 모드일 때만 특권 명령(Privileged instructions)를 실행한다. 만약 유저 모드에서 특권 명령을 실행하려 한다면 하드웨어는 이 동작을 막는다. 유저 모드에서 커널 모드에 접근하려면 시스템 콜을 통해야 한다.

6. Process Management

프로그램 : 메모리에 올라오지 않아 비실행중인 프로그램

프로세스 : 메모리에 올라와서 실행 중인 프로그램(PC,스레드,스케줄링등 필요)

7. Memory Management

주 메모리에는 용량의 한계로 프로세스를 무한으로 저장 해놓을 수 없으므로, 이를 관리하고, 또 가상주소 명령어를 절대 주소로 매핑해야 한다.

8. Storage Management

파일,디렉토리의 생성, 삭제, 조작, 저장 장치로 매핑, 비휘발성 저장매체에 백업 등을 관리한다.

File-System Management

파일 관리는 운영체제가 하는 일 중 가장 눈에 잘 보이는 요소다. 운영체제는파일을 생성, 제거하며, 당연히 읽기, 쓰기도 한다.

Mass-Storage Management

저장장치들은 WORM(Write-Once, Read-Many-Times)과 RW(Read-Write) 형식에 차이가 있다. 한번쯤 봤을 NTFS, FAT가 파일 저장 형식이며, 이를 파일 시스템(File system)이라고 부른다. 파일 시스템이 다르면 읽기는 가능하지만 쓰기가 불가능하다.

Caching

캐싱(Caching)은 효율적 컴퓨터 시스템 사용을 위하여 중요한 개념. 캐시는 굉장히 빠르고 작은 저장장치이며, 캐싱은 캐시 메모리를 사용해 컴퓨터의 속도를 높이는 기술이다. 데이터를 디스크에서 직접 가져오는 것은 너무 느리기 때문에 캐시에 자주 사용될 것 같은 데이터를 미리 담아두고, CPU나 디스크가 캐시의 데이터를 참조할 수 있도록 한다. 파일의 중복성이 증가하지만, 속도 역시 증가한다. 캐싱은 지역성(Locality) 원리를 사용한다. 지역성은 시간지역성(Temporal locality)과 공간지역성(Spatial Locality)으로 나뉜다. 시간지역성은 한 번 접근한 데이터에 다시 접근할 확률이 높다는 것이다. 공간지역성은 특정 데이터와 가까운 메모리 주소에 있는 다른 데이터들에도 접근할 가능성이 높다는 것이다.

Protection and Security

컴퓨터 시스템은 여러 사람들이 사용하기 때문에 보호와 보안도 매우 중요하다. 운영체제는 내외부로부터 컴퓨터를 위험하게 만드는 요소를 막기 위해 다양한 활동을 한다. 권한 확대(Privilege escalation)는 컴퓨터 시스템의 권한을 여러 층으로 나누고, 사용자의 권한을 구분해 어떤 행동이나 기준에 따라 사용자의 권한을 상승시키는 시스템이다.

Kernel Data Structures

커널 구현에는 기본적인 리스트(List), 스택(Stack), 큐(Queue), 링크드리스트(Linked list) 등의 자료구조가 사용된다. 특히 트리(Tree)는 상당히 효율적인 O(ln n)의 시간복잡도를 가질 수 있기 때문에 자주 사용된다.

Computing Environments

모바일 컴퓨팅(Mobile computing) 환경은 컴퓨터의 접근성을 높였고, 다양한 센서를 통해 사용자와의 인터페이스를 확장시켰다. 또한 분산형 컴퓨팅(Distributed computing), 클라이언트-서버 컴퓨팅(Client-Server computing), P2P 컴퓨팅(Peer-to-Peer computing) 등 다양한 컴퓨팅 환경이 있다. 특히 클라우드 컴퓨팅(Cloud computing)은 AWS(Amazon Web Service)를 통해 상당히 잘 알려졌다. 현대 컴퓨팅 환경의 가장 큰 특징을 꼽자면 휴대성, 가상화, 멀티코어가 있다.

Open-Source Operating Systems

세상에는 많은 오픈소스 운영체제들이 있다. 당장 깃허브에서도 리눅스의 코드를 찾아볼 수 있다.

'OS' 카테고리의 다른 글

6. 운영체제 프로세스 동기화  (0) 2018.11.02
5. 운영체제 CPU 스케줄링  (0) 2018.11.02
4. 운영체제 스레드  (0) 2018.11.02
3. 운영체제 프로세스  (0) 2018.11.02
2. 운영체제 시스템 구조  (0) 2018.11.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함