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


