대학공부/운영체제

2. OS structures

진진리 2025. 4. 9. 22:03

Operating System Services

  • User interface: GUI, CLI, Touch-screen interface
  • Program execution: 프로그램을 실행하기 위해서는 메모리에 로드해야 함
  • I/O operations: 실행 프로그램이 I/O를 요구할 수 있음
  • File-system manipulation: 프로그램은 파일이나 폴더를 읽고, 쓰고, 만들고, 삭제하고, 조회하고, 허가 관리를 함
  • Communnicatins: 실행 중인 프로세스간 발생 - shared memory, message passing을 통해 이루어짐
  • Resource allocation: 동시에 여러 사용자나 작업이 실행될 때 자원이 할당되어야 함
  • Logging: 프로그램의 컴퓨터 자원 사용을 추적
  • Protection and security: 컴퓨터에 저장한 정보의 사용을 제어하기를 원하는 경우 등
    • Protection: 시스템 자원에 대한 접근 제어
    • Security: 사용자 인증 요구, 유효하지 않은 접근 시도 방어

 

A View of Operating System Services


System Calls

  • 운영체제가 제공하는 서비스를 사용할 수 있게 해주는 인터페이스
  • 응용 프로그램 개발자들은 시스템 콜을 직접 사용하기보다 API를 이용해 프로그램 설계
    • Windows용 Wind32 API, POSIX API(유닉스 계열 OS), JVM Java API
  • 시스템 콜 대신 API를 사용하는 이유
    • 프로그램 이식성 -> API를 지원하는 모든 운영체제에서 실행 가능
    • 시스템 콜은 다루기 어려움
  • 운영체제가 시스템 콜을 제공하는 방법 예시
    • 파일 복사: cp in.txt out.txt
    • 프로그램이 사용자에게 직접 물어보는 방식(마우스나 아이콘 기반 등) -> 많은 I/O 시스템 콜 필요

 

Example of Standard API

  • 다른 파일로 한 파일의 내용을 복사

  • Standard API의 경우
    • read() 함수를 사용
    • ssize_t, size_t: 데이터 타입
    • int fd: 파일 디스크립터
    • void *buf: 읽은 데이터를 넣을 버퍼
    • size_t count: 버퍼에 읽을 최대 바이트 수
#include <unistd.h>
ssize_t   read (int fd, void *buf, size_t count)

 

System Call Implementation

  • Run-Time Environment(RTE): 프로그래밍 언어로 작성된 애플리케이션을 실행하기 위한 전체 소프트웨어 환경
    • 컴파일러, 인터프리터, 라이브러리, 로더 등
  • RTE는 system-call interface를 제공
    • API에서 호출된 함수를 가로채서 OS 내 필요한 시스템 콜 발생
    • 일반적으로 시스템 콜에는 번호가 지정되어 있고 번호를 기준으로 인덱스 테이블을 유지
    • 커널 내에서 시스템 콜 호출 후 상태(결과)를 반환

 

API - open() System Call

System Call Parameter Passing

  • 시스템 콜 시 더 많은 정보가 요구될 수 있음 - 입력 시 소스로 사용할 파일이나 메모리 버퍼의 길이나 주소 등
  • OS로 파라미터를 전달하는 일반적인 방법
    1. registers에 전달 -> 레지스터보다 더 많은 파라미터가 있을 수 있음!
    2. block or table in memory에 저장 후 주소를 레지스터에 전달 -> Linux, Solaris에서 사용
    3. 프로그램에 의해 stack에 push되고 OS에 의해 pop하여 사용

 

Passing of Parameters as a Table

 

Types of System Calls

  • Process control
    • create/terminate process, load, execute, wait/signal event, allocate and free memory...
  • File management
    • create/delete file, open, close, read, write, reposition, get/set fiile attributes...
  • Device management
    • request/release device, read, write, reposition, get/set device attributes, attach/detach devices...
  • Information maintenance
    • get/set time/date, get/set system data, get/set process/file/atttributes...
  • Communications
    • create/delete communication connection, send/recive messages, transfer status information, attach/detach remote devices...
  • Protection
    • get/set file permissions

 


System Services

  • System services(= system utilities): 프로그램 개발과 실행에 편리한 환경 제공
    • 파일 관리: 파일과 디렉터리의 생성, 삭제, 복사, 이름수정, 출력, 리스트 등
    • 상태 정보: 날짜, 시간, 사용 가능한 메모리 용량, 디스크 공간, 사용자 수 등
    • 파일 수정: 디스크에 저장된 파일을 생성하거나 수정하는 텍스트 편집기
    • 프로그래밍 언어 지원: 컴파일러, 어셈블러, 디버거, 인터프리터
    • 프로그램 로딩과 실행: absolute loader, relocatable loader, linkage editor, overlay loader
    • 소통: 프로세스/사용자/컴퓨터시스템 간의 가상 연결 생성 메커니즘
    • 백그라운드 서비스: 어떤 프로세스는 시스템 종료까지 계속 실행됨
      • 서비스, 서브시스템, 데몬

 

Linkers and Loaders

  • 프로그램을 컴파일한 후 메모리에 놓아 실행 준비를 마치는 과정
    1. Compiler
      • 소스 프로그램을 오브젝트 파일로 변환
      • 오브젝트 파일은 어떤 물리적 위치에서도 로딩 가능해 relocatable object file이라고도 부름
    2. Linker
      • 이러한 오브젝트 파일을 하나의 바이너리 실행가능한 파일로 결합
      • 다른 오브젝트 파일이나 라이브러리를 포함
    3. Loader
      • 메모리에 로드하여 실행 준비
      • 메모리 주소를 재조정하는 작업을 relocation이라고 함 -> 오브젝트 파일이 합쳐진 후 주소가 변경될 수 있음

 


Operating System Design and Implementation

  • 초기 운영체제는 어셈블리어로 작성
  • 현대는 고급 언어(C, C++)로 작성
    • 장점: 코드를 빠르게 읽을 수 있고 compact하며 이해 및 디버깅에 좋음
    • 단점: 속도가 느리고 저장 공간 증가

 

OS Structure: Monolithic Structure

  • 단일 구조 - 가장 단순하고 흔한 구조
  • UNIX OS는 시스템 프로그램과 커널로 구성
    • 커널: 여러 인터페이스와 장치 드라이버로 나뉘어 있음.여러 기능을 시스템 콜을 통해 제공.

 

OS Structure: Layered Approach

  • monolithic approach = tightly coupled system
  • loosely coupled system: 특정 기능만 수행하는 작은 컴포넌트들로 분리
    • OS를 여러 레이어로 나누면 layer 0은 하드웨어이고 layer N(highest)는 user interface
    • 각 레이어는 오직 더 낮은 레이어의 서비스만 사용하도록 구성
    • 구성과 디버깅이 간단해짐
    • 그러나 완전히 계층적인 구조만 사용하는 OS는 적음 -> 각 레이어 정의가 어려움

 

'대학공부 > 운영체제' 카테고리의 다른 글

4. Threads & Concurrency  (0) 2025.04.10
3. Processes  (0) 2025.04.10
Chapter 1. Introduction  (0) 2023.10.22