OS Concepts 10th 16

[OS] 3-3. 프로세스에 대한 연산

대부분의 시스템에서 프로세스들은 병행 실행되면서 동적으로 생성되고 제거되야 한다. 때문에 OS는 프로세스 생성 및 종료를 위한 기능을 제공해야한다. 이번 페이지에서는 프로세스 생성 방법에 대해 살펴보도록 하겠다 . 1. 프로세스 생성 프로세스가 실행되는 동안 하나의 프로세스는 여러 개의 새로운 프로세스들을 생성할 수 있다. 이때, 프로세스를 생성한 프로세스를 부모 프로세스라고 하고 생성된 프로세스를 자식 프로세스라고 한다. 마찬가지로 자식 프로세스들도 프로세스를 생성할 수 있다. 이 결과들을 그림으로 표현하면 하나의 트리가 완성된다. 대부분의 현대 OS들은 프로세스 식별자(pid)를 사용해서 프로세스를 구분한다. 당연히 pid는 시스템의 각 프로세스에 고유한 값을 가지도록 할당된다. 이 식별자는 프로세스..

OS Concepts 10th 2023.09.06

[OS] 3-2. 프로세스 스케쥴링

다중 프로그래밍의 목적은 CPU 이용을 최대화하기 위해 항상 어떤 프로세스를 실행되도록 하는데 있다. 시분할(time sharing)의 목적은 각 프로그램이 실행되는 동안 사용자가 상호작용할 수 있도록 프로세스들 사이에서 CPU 코어를 빈번하게 교체하는 것이다. 때문에, 어떤 프로세스를 선택해야 하는지 결정해주는 프로세스 스케쥴러가 필요하다. 각 CPU 코어는 한 번에 하나의 프로세스를 실행할 수 있다. 단일 CPU 코어 ⇒ 한 번에 하나의 프로세스를 실행할 수 있다. 다중 CPU 코어 ⇒ 한 번에 여러 개의 프로세스를 실행할 수 있다. 코어보다 많은 프로세스가 있다면 남아있는 프로세스는 코어를 사용할 수 있는 상태에서 다시 스케쥴 될 때 까지 대기해야 한다. 이때, 현재 메모리에 있는 프로세스의 개수를..

OS Concepts 10th 2023.09.05

[OS] 3-1. 프로세스 개념

OS를 논의할 때 모든 CPU 활동을 어떻게 지칭해야 하는지가 항상 문제가 된다. 초창기 컴퓨터 ⇒ 작업(job)을 실행하는 일괄처리 시스템 시분할 시스템 ⇒ 사용자 프로그램 또는 태스크(task)를 실행하는 시스템 단일 사용자 시스템 ⇒ 워드 프로세서, 웹 브라우저와 같은 여러 프로그램을 한 번에 실행할 수 있다. 임베디드 장치 ⇒ 멀티 태스킹을 지원하지 않아서 한 번에 하나의 프로그램만 실행할 수 있다. 여러 측면에서 이러한 모든 활동들은 유사하므로 이러한 모든 활동을 프로세스(process)라고 한다. 대부분은 프로세스라는 용어도 사용할 것이지만 작업(job)이라는 단어가 사용될 때 많은 OS 이론 및 용어가 개발되었기 때문에 적절한 경우에는 작업(job)이라는 단어를 사용할 것이다. 1. 프로세스..

OS Concepts 10th 2023.09.04

[OS] Chapter 3. Process

초기 컴퓨터 시스템은 한 번에 하나의 프로그램만 실행되도록 허용했다. 오늘날의 컴퓨터 시스템은 메모리에 다수의 프로그램이 적재(load)되어 병행 실행되는 것을 허용한다. 때문에 여러 개의 프로그램을 보다 견고하게 제어하고 구획화할 필요성이 대두되었다. 이러한 필요성 때문에 프로세스라는 개념이 고안되었다. 프로세스란... 실행 중인 프로그램을 말한다. 프로세스는 현대 컴퓨팅 시스템에서 작업의 단위이다. OS의 주된 관심은 사용자 프로그램을 실행하는 것이지만 사용자 공간에서 제대로 수행할 수 있는 다양한 시스템 작업들을 처리할 필요가 있다. 그래서 하나의 시스템은 사용자 코드를 실행하는 프로세스와 OS 코드를 실행하는 프로세스의 집합체다. 이번 챕터에서는 프로세스란 무엇이고 OS에서 어떻게 표현되는지 OS..

OS Concepts 10th 2023.09.03

[OS] 2-8. OS 구조

1장에서 논의했던 OS의 구성요소들이 어떤 방법으로 서로 연결되어 있고 하나의 커널로 결합되는지 살펴보자. 1. 모놀리식 구조 (Monolithic Structure) 커널의 모든 기능을 단일 주소 공간에서 실행하는 파일에 넣는 구조다. 이 방법은 OS를 설계하는 일반적인 기술이다. 이러한 구조를 갖는 대표적인 운영체제가 Unix이다. Unix는 커널과 시스템 프로그램 두 부분으로 구성된다. Unix가 발전해오면서 커널은 여러 인터페이스와 장치 드라이버로 나눌 수 있고 각각이 추가되고 확장되었다. 전통적인 Unix 운영체제의 시스템 구조 위와 같이 계층으로 구성되어 있다. 시스템 콜 인터페이스 아래 ~ 물리적 HW 위 까지가 커널 영역이다. 커널은 시스템 콜을 통해 파일 시스템, CPU 스케쥴링, 메모리..

OS Concepts 10th 2023.09.02

[OS] 2-5. 링커와 로더(Linker and Loader)

이번 절에서는 프로그램 컴파일 ⇒ 메모리에 배치 ⇒ 사용가능한 CPU 코어에 실행할 수 있는 과정을 살펴보려한다. 그림 1) 컴파일러를 통해 소스파일을 object 파일로 컴파일한다. 이렇게 함으로써 물리 메모리에 위치에 적재될 수 있다. 2) 링커(linker)를 통해 변환한 object 파일과 다른 object 파일을 결합해서 하나의 이진 실행파일로 만들어낸다. 여기서 결합되는 다른 object 파일에는 라이브러리도 포함될 수 있다. 3) 로더(loader)를 통해 결합해서 만든 실행파일을 메모리에 적재하고 CPU 코어에서 실행할 수 있도록 한다. 링커와 로더와 연관된 동작들을 재배치라고 하고 이는 프로그램 부분에 최종 주소를 할당하고 코드와 데이터를 해당 주소와 일치하도록 조정한다. 이렇게 함으로써..

OS Concepts 10th 2023.09.02

[OS] 2-3. 시스템 콜

시스템 콜(System Call)은 OS에 의해 사용가능한 서비스에 대한 인터페이스를 제공한다. 1. 예제(Example) OS가 어떻게 시스템 콜을 사용할 수 있게 하는지 살펴보기 전에 시스템 콜이 어떻게 사용되는지를 설명하는 예시를 보자. ex) 하나의 파일에서 데이터를 읽어와서 다른 파일로 복사하는 간단한 프로그램을 작성한다. 그러면 크게 아래의 과정을 생각해 볼 수 있다. 1) 파일 이름을 얻어내는 작업 2) 입력 파일을 열고 출력 파일을 생성 후 여는 작업 3) 입력 파일에서 내용을 읽어서(read) 출력 파일에 쓰는(write) 작업 4) 전체 파일이 복사된 이후 파일을 닫고 기록 후 정상 종료 여기에 각 단계에서 발생할 수 있는 오류 처리도 시스템 콜을 이용한다. 이러한 순서를 아래 그림으로..

OS Concepts 10th 2023.08.21

[OS] 2-2. User and OS Interface

사용자와 OS가 소통하는 방법은 기본적으로 3가지가 있다. ⇒ 명령 인터프리터, 그래픽 기반 사용자 인터페이스, 터치스크린 인터페이스 1. 명령 인터프리터 (Command Interpreter) 대표적으로 Linux, Unix 뿐만 아니라 Windows, macOS에서도 명령 인터프리터 형태의 UI를 제공한다. 여기서 인터프리터(해석기)는 shell(쉘)이라고도 불린다. Linux 시스템에서는 Bourne shell, C shell, Bourne-Again shell 등 여러 가지 쉘을 제공한다. 명령 인터프리터의 중요한 기능은 사용자가 지정한 명령을 가져와서 그것을 수행하는 것이다. 파일 생성, 삭제, 리스트, 프린트 등 많은 명령을 수행할 수 있다. 2. 그래픽 기반 사용자 인터페이스 (GUI, Gr..

OS Concepts 10th 2023.08.16

[OS] 2-1. Operating-System Services

OS는 1) 프로그램 실행환경을 제공 2) 프로그램과 그 프로그램의 사용자에게 특정 서비스를 제공 아래 그림은 다양한 OS 서비스에 대한 관점과 각 서비스 간의 상호작용을 보여준다. 이러한 서비스는 프로그래머가 프로그래밍 작업을 더 쉽게 수행할 수 있도록 한다. UI - GUI, CLI, 터치스크린 인터페이스 program execution (프로그램 수행) 시스템은 프로그램을 main memory에 적재해서 실행할 수 있어야 한다. 해당 프로그램은 정상적이든 비정상적이든 실행을 끝낼 수 있어야 한다. I/O Operation (입출력 연산) 입출력에는 파일 혹은 입출력 장치과 연관될 수 있다. 효율성과 보호(protection)를 위해 사용자가 I/O 장치를 직접 제어할 수는 없고 OS가 입출력을 수행..

OS Concepts 10th 2023.08.16

[OS] Chapter 2. Operating-System Structure

OS를 살펴볼 때 3가지 관점으로 바라볼 수 있다. 1) OS가 제공하는 서비스에 초점을 맞춘다. 2) OS가 사용자와 프로그래머에게 제공하는 인터페이스에 초점을 맞춘다. 3) 시스템의 구성요소와 그들의 상호 연결에 초점을 맞춘다. 이번 챕터에서는 OS의 3가지 측면을 모두 살펴본다. 이번 챕터의 목표 - OS에서 제공하는 서비스를 식벼랗ㄴ다. - OS 서비스를 제공하기 위한 시스템 콜을 사용하는 방법을 설명한다. - OS 설계를 위한 monolithic, 계층화, micro kernel 등을 비교 및 대조한다. - OS 부팅 프로세스를 설명한다. - OS 성능을 모니터링하기 위한 도구를 적용한다. - Linux 커널과 상호작용 하기 위한 커널 모듈을 설계하고 구현한다.

OS Concepts 10th 2023.08.16