[OS] 공룡책 운영체제 CH 2. Operating-System Structures

seongbin·2026년 2월 27일

OPERATING SYSTEM

목록 보기
1/1

본 내용은 공룡책이라 불리는 Abraham Silberschatz, Peter Baer Galvin, Greg Gagne의 『Operating System Concept 10th』 을 바탕으로 작성하였습니다.

2.1 Operating-System Services

운영체제는 프로그램들이 실행될 환경을 제공한다.
정확하게는 특정 서비스를 프로그램과 사용자들에게 제공하는데, 이 서비스들이 개발자가 프로그래밍을 더욱 쉽게 할 수 있게 해준다.

유저 관점에서 유용한 서비스들

  • User Interface (GUI, touch-screen interface, CLI)
  • Program execution : 프로그램을 메모리에 적재해 실행시키고, 정상/비정상 적으로 종료할 수 있다.
  • I/O operations : 실행중인 프로그램은 입출력을 요구할 수 있다.
    OS는 입출력을 수행할 수단을 제공한다. (유저가 직접 입출력 제어 x)
  • File-system manipulattion : 파일을 읽고 쓸 수 있고, 생성 및 삭제등의 기능을 수행할 수 있다.
    일부 OS들은 특정 파일이나 디렉토리에 대한 접근을 허용/거부하는 권리를 포함한다.
  • Communications : 프로세스끼리 정보를 교환해야하는 상황에 다음 방식으로 교환한다.
    • shared memory : 메모리를 공유
    • message passing : 정보의 패킷을 옮김
  • Error detection : OS는 에러를 즉시 찾고 고칠 수 있어야 한다.
    (적절한 행동을 취하기 위해 시스템을 멈춰서라도 조치를 취해야 한다.)

프로세스 관점에서 유용한 서비스들

  • Resource allocation : 다양한 프로세스들이 동시에 실행되기에, OS는 다양한 자원 (CPU cycles, memory 등) 을 관리해야한다.
  • Logging : 프로그램이 어떤 자원을 얼마나 쓰는지 추적한다.
  • Protection and security : 프로세스가 다른 프로세스를 방해하면 안된다.
    또한 OS가 자원에 대한 접근을 통제하는 것을 보장해야 한다.
    외부로부터 시스템을 보호하는 것도 포함한다.

2.3 System Calls

시스템 콜이란 운영체제가 제공하는 서비스에 대한 인터페이스를 제공한다.


a file의 내용을 b file에 복사하는 과정이다. 간단한 작업인데도 수많은 system-call이 사용된다.

개발자들은 이 모든 system call을 알 필요없이 API(application programming interface)를 사용해서 작업을 수행한다.
API는 특정 함수들의 집합인데 이 함수들이 system call을 대신 해준다.

RTE (Run time environment)가 system call의 인터페이스를 제공한다.
API의 호출을 가로채서 실제 OS의 시스템 콜을 호출한다.

그냥 사용자는 구체적인 것을 몰라도 된다라고 생각하면 된다.

운영체제에 매개변수를 전달하는 방법

  • (매개변수의 수가 5개 이하라면) 매개변수를 레지스터에 전달
  • 매개변수를 메모리 내 블록이나 테이블에 저장후 그 블록의 주소를 레지스터에 전달
  • 스택에 push & pop

2.9.2 System Boot

운영체제가 생성된 이후에 하드웨어에 의해 사용가능한 상태가 되어야 한다.
하드웨어는 다음과 같은 방법으로 커널을 적재한다.

  1. 커널 찾기: 부트 로더(Boot Loader)라는 작은 코드가 커널의 위치를 파악함
  2. 메모리 로드: 커널을 메모리에 올리고 실행
  3. 하드웨어 초기화: 커널이 하드웨어 통제
  4. 파일 시스템 마운트: 운영체제가 파일들에 접근할 수 있도록 루트 파일 시스템을 연결

  • BIOS라는 첫 번째 부트로더가 실행되고, 이 부트로더가 두 번째 부트로더(boot block)을 적재하는 경우도 있다.
    두 번째 부트로더가 전체 OS 를 메모리로 가져오고 실행시킨다.

  • 오늘날에는 BIOS 대신 UEFI가 사용되는데 부트 로더가 상태 진단, 초기화등의 기능을 추가로 수행한다.


GRUB은 Linux와 Unix에서 쓰이는 부트 로더인데, 이는 부팅하는 동안 kernal 매개변수를 수정하고 특정 kernal을 선택하는 등의 기능을 가지고 있다.

공간을 아끼기 위해 압축되어 disk에 올려졌다가, 메모리에 올라가서 압축해제 된다.
부팅 과정에서 진짜 파일 시스템을 설치하기 위해 필요한 필수 드라이버와 kernal 모듈을 가지고 있는 일시적인 RAM 파일 시스템 'initramfs' 를 만든다.

커널이 시작되고 필수 드라이버가 설치되면 진짜 파일 시스템으로 전환하고, initial process 인 'systemd'를 생성한다.

Mobile은 initramfs를 진짜 파일 시스템으로 계속 사용한다.

또한 부트 로더는 하드웨어 이슈를 진단하고, 파일 시스템을 수정하고, os를 재설치할 수 있는 recovery mode도 제공한다.

0개의 댓글