/////
Search
📝

3월18일(월)

A view of Operationg System Services

P2(processor)→ 요청(Interrupt발생) → CPU(자원) → 할당 → P1

Error Detection

데이터 전송과정에서 에러가 발생해 데이터가 원본과 달라진 경우를 감지

GUI

예전에는 GUI, CLI가 운영체제에 따라 달라짐
이제는 한 운영체제 내에서도 GUI, CLI 모두 지원
CLI기반으로 하면, 자원활용이 적어진다(자원의 부담 감소 = 자원 효율 향상)
명령어 조합을 통해 자동화도 지원
CLI기반은 서버용 PC에서 많이 사용

System Calls

OS에 의해 제공되는, 서비스에 대한 프로그래밍 인터페이스
대부분의 경우엔, 고차원의 API를 통해 프로그램에 의해 액세스됨(Not Direct System Call)
API가 있다 → 기계에게 직접 명령어들로 실행하는게 아닌, 편리한 방식이 있다
이러한 과정에서 “시스템 콜”이 필요합니다 즉, API를 통해 명령어를 수행하는 과정이 필요합니다

Example

Copy & Paste
한 파일 내 내용을 다른 파일로 복사하는 행위(A, B 두 파일(= Source file, Destionation file)이 존재)

User App(응용 프로그램)의 요청에 따라 커널 접근을 위한 인터페이스(API)

요청하는 업무를 대신하는 것
각 시스템 콜은 일의 유형에 따라 번호가 부여됨
콜 번호, 테이블

API - System Call - OS 관계

System Call Number(Linux)

모든 시스템콜은 번호를 가짐
시스템콜 사용시, 번호를 통해 실행할 시스템콜 서칭
커널에 등록된 시스템콜 목록은, 테이블로 저장되어 있음
시스템콜 번호는 레지스터를 통해 전달

System Call Handler

응용프로그램(User App)은 시스템콜을 사용하고자 할 경우, 커널이 대신해 줌 (커널에 신호를 보내야함)
핸들러는, 레지스터에서 값을 읽은 후 호출번호 판단

System Call Parameter Passing

레지스터에 콜을 쌓아두고, 번호에 따라 순서대로 OS에 작업을 요청

Types of System Calls

프로세스가 있다 → 응용 프로그램이 돌아간다 → 자원을 소모한다 → CPU할당, 메모리 분배

1. File Management

2. Device Management

3. Information Management

4. Communication

프로세스는 한 두개가 동작하지 않음
수십개가 한번에 돌기 때문에, 할당에 대해 겹치지 않도록(안 꼬이도록) 해주어야함
그렇기 때문에, 프로세스끼리도 서로 어느정도 쓸지, 어느 시간만큼 쓸지를 서로 통신해줘야함
나중에 쓰레드나 뒷 내용이 나오면 거기서 추가로 설명할 예정

5. Protection

Standard C Library Example

어떤 프로그래밍(C프로그래밍 등)을 수행하려면 결국 시스템 콜을 해야한다

Linkers & Loaders

Relocatable Object File

객체 파일로 컴파일된 소스코드는 아무 물리적 메모리 위치에 Load되기 위해 디자인됨

Linker

실행가능한 모듈을 만드는 시스템 SoftWare : 연결기능만 수행
아래 것들을 하나의 Binary Executable File(바이너리 실행파일)로 결합
라이브러리를 가져오기도 함
객체파일, 또 다른 실행프로그램 등을 연결

Loader

로드 모듈을 보조메모리에서 주메모리에 적재하는 시스템 SW
실행되면서 로더에 의해 부차적인 스토리지에 저장되어있던 프로그램을 메모리로 가져옴
재할당이 일어나는 경우엔, 최종 주소를 프로그램에게 연결하고, 데이터와 코드를 해당 주소에 일치시킴

Loader 기능

할당(Allocation)
프로그램을 실행하기 위해, 기억장치 내 옮겨놓을 공간을 확보하는 기능
연결(Linking)
부프로그램 호출시, 할당된 메모리의 시작주소를 기억해서 연결하는 기능
재배치(Relocation)
보조메모리에 저장된 프로그램이 사용하는 각 주소들을 할당된 기억장소의 실제주소로 배치하는 기능
적재(Loading)
실행 프로그램을, 할당된 기억공간에 실제로 옮기는 기능

동적 적재 로더(DLL : Dynamic Loading Loader)

프로그램 실행할때, 필요부분만 적재하고 나머지는 보조메모리에 저장

동적 링크 라이브러리(DDL : Dynamic Linked Library)

실행파일에서 사용되지 않는 라이브러리를 링크하거나 로드하지 않음
라이브러리는 조건부로 링크됨 → 즉, 프로그램 실행시간에 필요한 경우 적재
프로그램이 적재될때, 동적으로 링크됨 적재될 수 있도록 재배치 정보 삽입
여러 프로세스가 동적으로 링크된 라이브러리를 공유 → 메모리 절약

Implementation

C언어로 개발을 보통 하기에, Low-Level 언어 학습에 많이 공을 들여라
3장에 진입합니다
1,2장은 개론이라서 가볍게 다룬 거고 3장부턴, OS가 하는 일을 구체적으로 살펴봅니다

3장: Processes

프로세스가 나를 위해서 일해준다
수많은 연산을 수행한다
거기에, 내가 일함으로써 나오는 내용물에 대해서 자원을 할당도 해줘야함
프로세스를 쓴다 → CPU를 쓴다
동시에 다른 프로세스들도 있으니, CPU를 잘 할당해줘야한다.
사용하는 쪽에서 불편함이 없도록 프로세스들을 잘 스케쥴링해줘야, 버벅임없이 CPU를 사용할 수 있다.
프로세스들끼리의 커뮤니케이션
자원사용에 꼬임이 생기지 않도록 프로세스들 간 통신을 이루는 행위
Shared-Memory System
Message-Passing System