본문 바로가기
컴퓨터 과학(Computer Science)/운영체제(Operating System)

[2주 차] - 운영체제와 임베디드 운영체제, Intel 8086 CPU Architecture

by TwoJun 2023. 3. 16.

    과목명 : 운영체제(Operating System)

수업일자 : 2023년 03월 15일 (수)

 

 

 

 

 

1. 운영체제(Operating System), 임베디드 운영체제(Embedded Operating System)

1-1. 운영체제의 정의

컴퓨터 시스템의 계층 구조(Layered architecture)

- 운영체제(Operating System)는 사용자의 하드웨어, 시스템의 자원을 제어하고 응용 프로그램에 대한 일반적인 서비스를 제공하는 시스템 소프트웨어를 의미합니다.

 

 

 

 

1-2. 임베디드 운영체제(Embedded operating system)의 정의

- 일반적으로 하드웨어에 내장되어 있는 운영체제를 의미하며, 보통 전자제품, PDA, 휴대전화, 디지털 카메라 등의 소형 정보 기기와 자동차에 주로 사용되는 운영체제를 의미합니다.

 

 

 

 

 

 

2. Operating Systems and Interface(운영체제 커널과 인터페이스)

Operating Systems(OS) and Interface

 

 

2-1. 운영체제의 핵심 기능, 커널(Kernel)

https://ko.wikipedia.org/wiki/%EC%BB%A4%EB%84%90_%28%EC%BB%B4%ED%93%A8%ED%8C%85%29

 

- 운영체제의 커널(Kernel)이란, 운영체제의 핵심적인 기능을 담당하는 프로세스 관리, 메모리 관리, 저장 장치 관리와 같은 기능들을 모아놓은 프로그램을 의미하며 커널을 통해 시스템을 통제할 수 있습니다.

 

 

 

 

2-2. 운영체제의 인터페이스(Interface)

- 컴퓨터 과학에서의 인터페이스는 서로 다른 두 개의 시스템이나 장치 사이에서 데이터나 신호를 주고받는 경우의 경계면을 의미하며, 보통 사용자가 시스템을 쉽게 동작시킬 수 있도록 중간에서 주체 역할을 수행합니다.

 

 

 

 

 

 

3. 시스템의 자원을 공유한다는 것은?

3-1. CPU(Central Processing Unit)

(1) 프로세스(Process)

- 컴퓨터에서 실행 중인 프로그램을 의미하며 운영체제에서 할당해 주는 작업의 단위로써 프로세스 간의 별도 자원 공유(Shared resource)는 발생하지 않습니다.

 

(2) 스레드(Thread)

- 프로세스 내부에서 실행되는 작업들의 단위로써 하나의 프로세스는 여러 개의 스레드를 보유할 수 있으며 이러한 여러 스레드들은 부모 프로세스의 자원을 공유할 수 있습니다. (즉, 같은 메모리에 접근이 가능함을 말함.)

 

 

 

 

3-2. Memory(메모리)

https://ko.wikipedia.org/wiki/%EA%B0%80%EC%83%81_%EB%A9%94%EB%AA%A8%EB%A6%AC

 

(1) 가상 메모리(Virtual memory)

- 가상 기억 장치라고도 정의되며, 운영체제의 메모리 관리 기법 중 하나로 물리적으로 실제 이용 가능한 메모리 공간을 추상화하여 사용자가 입장에서는 매우 큰 메모리 공간이 존재하는 것처럼 보이도록 하는 기법입니다. 이때 프로세스들이 부여받는 메모리 주소는 가상으로 설정된 가상 메모리 공간 주소입니다.

 

 

 

 

3-3. 입/출력 장치(I/O Devices)

프로세서의 인터럽트 처리 후 기존 프로그램으로 실행 복귀

(1) 인터럽트(Interrupt)

- 컴퓨터 과학에서 인터럽트(Interrupt, 끼어듦 또는 가로막기)는 프로세서가 특정 프로그램을 실행하고 있을 때 입출력 장치에서 예외 상황이 발생되어 이에 대한 처리가 필요한 경우에 프로세서에게 이를 알려 예외 상황을 처리할 수 있도록 하는 것을 의미합니다.

 

 

(2) 파일 시스템(File System)

- 파일 시스템은, 컴퓨터에서 파일이나 자료에 대해 쉽게 조회 및 접근할 수 있도록 저장 또는 조직하는 체계를 의미합니다.

 

 

(3) 디바이스 드라이버(Device driver)

- 특정 하드웨어 또는 장치를 제어하기 위한 목적으로 커널의 일부분으로 동작하는 프로그램을 의미합니다.

 

 

 

 

 

 

 

4. CPU의 구조(Structure of Central Processing Unit)

Structure of CPU

4-1. Instruction Fetcher(명령어 인출기)

- CPU가 메인 메모리로부터 명령어를 읽어올 수 있습니다.

 

 

4-2. Instruction Decoder(명령어 해독기)

- 읽어들인 명령어에 대해 수행할 동작을 결정하기 위해 명령어를 해독하게 됩니다.

 

 

4-3. 레지스터(Register)

- 프로세서에 위치한 고속 메모리로써 매우 적은 소량의 데이터나 자주 사용되는 결과값들을 미리 저장해 두는 공간으로, 프로세서가 빠르게 레지스터를 참조하여 작업 속도를 증가시키는데 목적이 있습니다.

 

 

4-4. ALU(Arithmetic Logic Unit)

- 산술 논리 장치의 경우 덧셈, 뺄셈과 같은 단순 산술연산부터 배타적 논리합(Exclusive-OR), 논리곱(Exclusive-AND)과 같은 논리 연산을 수행할 수 있는 디지털 회로를 의미합니다

 

 

 

 

 

 

 

5. Machine cycle(기계어 수행 주기)

- 기계어 수행 주기(Machine cycle)란, 프로세서가 하나의 기계 명령어를 처리하기 위한 다음과 같은 4가지 단계를 의미합니다.

Machine cycle

 

(1) 메인 메모리로부터 명령어를 인출합니다.

 

(2) 명령어를 해석합니다.

 

(3) 명령어를 실행합니다.

 

(4) 명령어 실행 결과를 다시 메인 메모리에 저장합니다.

 

 

 

 

 

 

6. Layered Architecture, Monolithic kernel & Micro Kernel

Layered architecture of computer system

- User mode와 Kernel mode를 나눈 이유는 운영체제의 커널에서 시스템의 주요 리소스를 관리하기 때문에, 일반 사용자가 주요 리소스에 접근하지 못하도록 모드를 2가지로 나누게 되었습니다.

 

6-1. User(Non-privileged) mode?

- 일반 사용자(User)가 주요 리소스에 접근할 수 있는 영역에 제한을 두고, 나머지 주요 리소스에 접근할 수 없는 모드를 의미합니다.

 

- 일반적으로 응용 프로그램 계층에서 작성된 코드가 유저 모드에서 실행됩니다.

 

 

 

6-2. Kernel(Privileged) mode?

- 시스템의 주요 리소스에 접근 가능하고 작업이 가능한 모드를 의미합니다. 

 

 

 

 

모놀리식 커널 구조와 마이크로 커널 구조

6-3. Monolithic Kernel(모놀리식 커널)

- 입출력 기능, 네트워크 기능, 여러 장치 지원 등 OS의 일반적인 기능을 커널과 동일한 메모리 공간에 위치시키고 실행하는 기법을 의미합니다. 

 

- 운영체제의 커널이 모든 기능을 포함하고 있는 커널 아키텍처입니다.

 

- 장점 : 각 기능 간 Communication이 활발하며 System call에 의한 서비스가 빠른 편입니다.

 

- 단점 : 새로운 디바이스가 추가되거나 기능 수정 시 커널을 재빌드해야 하는 번거로움이 생깁니다.

 

- 예시 : UNIX, Linux 기반 운영체제

 

 

 

 

6-4. Micro Kernel(마이크로 커널)

- 운영체제를 구성하는 몇 개의 요소나 기능들을 커널로부터 분리한 뒤, 나머지 기능들은 외부로부터 모듈을 추가하는 방식으로 동작하는 초소형 커널 구조를 의미합니다.

 

- 커널의 핵심적인 기능(Scheduling, Memory management)만을 포함시키고 필요로 하는 추가 기능들은 별도로 추가해 줘야 하는 커널 구조입니다.

 

- 장점 : 안정성, 보안성이 보장됩니다.

 

- 단점 : 모놀리식 커널 구조에 비해 성능 부분에선 다소 떨어집니다.

 

- 예시 : AmigaOS, Minix 등 임베디드 운영체제에 사용

 

 

 

 

 

 

7. 운영체제의 주요 기능(Main functions of operating system)

Main functions of Operating system

7-1. Scheduler(운영체제 스케줄러)

- 여러 프로세스가 실행 중이라고 가정할 때, 해당 프로세스들이 시스템의 자원을 동시에 요구하는 상황이 발생할 수 있습니다. 그러나 시스템의 자원은 한정되어 있으며 제한된 자원들을 프로세스들에게 어떻게 분배할 것인지 우선순위를 결정하는 Scheduling 역할을 수행합니다.

 

 

7-2. Resource manager

- 운영체제의 핵심 기능 중 하나로써 이용 가능한 자원을 효율적으로 관리하는 역할을 수행합니다. 이에 따라 프로세서와 메모리, 기타 입출력 장치들은 자신들만의 여러 가지 자원 관리 기법을 통해 시스템의 자원을 효율적으로 사용할 수 있습니다.

 

 

7-3. Network protocols

- 운영체제는 LAN과 WAN에 접속하는 네트워크 기능을 보유하고 있습니다.

 

 

 

 

 

 

8. 8086 Interal Architecture

8086 Internal Architecture

8-1. Instruction

- Instruction의 경우 Operation code와 Operand로 구성됩니다.

 

- Assembly programming을 통해 작성할 수 있습니다.

 

 

 

 

8-2. 8086의 레지스터 구성 요소

(1) General registers 

- 범용 레지스터라고도 불리며 일반적인 레지스터를 의미합니다.

 

(2) Pointer registers

-  스택 영역을 표시하기 위한 레지스터입니다.

 

(3) Index registers

- 문자열의 시작 주소 또는 기타 다른 데이터를 저장하기 위해 사용되는 레지스터입니다.

 

(4) Flag registers

- 상태 레지스터라고도 불리며, 프로세서에서의 다양한 산술 연산 결과를 반환하는 플래그 비트들이 모인 레지스터입니다.

 

(5) Segment registers

- 32비트 이전 프로세서에서 사용되던 레지스터입니다.

 

 

 

 

8-3. IP(Instruction Pointer 또는 Program Counter)

- 프로세서에 의하여 다음에 실행될 명령어의 주소가 저장된 포인터(레지스터)입니다. 프로그램 카운터(Program counter)라고도 부릅니다.

 

 

 

 

8-4. Segment registers

(1) CS(Code Segment Register)

- DOS 프로그램의 코드 세그먼트의 시작 번지를 저장하며 이 번지에 명령어 포인터 레지스터 내의 옵션값을 더하면 실행을 위한 명령어의 번지가 완성됩니다. 실행될 기계 명령어가 저장된 메모리 주소를 지정합니다.

 

(2) DS(Data Segment Register)

- 프로그램의 데이터 세그먼트 레지스터의 시작 번지를 기억하고 프로그램에서 정의된 상수, 작업 영역의 메모리 주소를 지정합니다.

 

(3) SS(Stack Segment Register)

- 번지와 데이터를 임시로 저장할 목적으로 쓰이는 스택을 메모리에 구현한 것으로, 스택 포인터 레지스터의 오프셋 값을 더하면 스택 내의 현재 워드를 가리키는 번지입니다. 프로그램이 임시로 저장할 필요가 있거나 사용자의 피호출 서브 루틴이 사용할 데이터와 주소를 포함하고 있습니다.

 

(4) ES(Extra Segment Register)

- 지정하기 위해 본 레지스터를 사용할 때 DI 레지스터와 연관되어 있습니다.

 

(5) FS, GS

-  286 이후에 추가된 레지스터로써 보조적인 세그먼트 레지스터 역할을 담당합니다.

 

 

 

 

8-5. Segment란 무엇일까?

- 세그먼트(Segment)는 사전적인 의미로 "부분"이라는 뜻을 가지고 있습니다 컴퓨터 과학에서의 세그먼트는 메모리의 한 부분(최대 64 KB)을 의미하며 이에 따라 Offset은 해당 세그먼트의 상대적 주소를 의미합니다.

 

 

 

 

 

 

 

 

- 학부에서 수강했던 전공 수업 내용을 정리하는 포스팅입니다.

- 내용 중에서 오타 또는 잘못된 내용이 있을 시 지적해 주시기 바랍니다.

댓글