본문 바로가기

Computer Structure & Operating System/2025 version

Computer Structure & OS(9) - 운영체제 시작하기

728x90
반응형

1) 운영체제를 알아야 하는 이유

    1-1) 운영체제란

    1-2) 운영체제를 알아야 하는 이유

2) 운영체제의 큰 그림

    2-1) 운영체제의 심장, 커널
    2-2) 이중 모드와 시스템 호출

    2-3) 운영체제의 핵심 서비스

    2-4) 가상 머신과 이중 모드의 발전

    2-5) 시스템 호출의 종류

 

 

 

 

 

 

 

1) 운영체제를 알아야 하는 이유

1-1) 운영체제란

  • 운영체제(operating system) : 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
    • 시스템 자원(혹은 줄여서 자원) : 프로그램 실행에 마땅히 필요한 요소들을 의미함
  • 운영체제는 커널 영역(kernel space)에 적재되어 사용자 영역(user space)에 적재된 응용 프로그램들에게 자원을 할당하고, 이들이 올바르게 실행되도록 도움
    • 응용 프로그램(application software) : 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램을 의미함(예를 들어 우리가 일상적으로 사용하는 워드 프로세서, 인터넷 브라우저, 메모장 등의 프로그램이 모두 응용 프로그램에 해당함)
  • 운영체제는 실행할 프로그램을 메모리에 적재하고, 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리함
  • 운영체제는 응용 프로그램에 자원을 효율적으로 배분하고, 실행할 프로그램들이 지켜야 할 규칙을 만들어 컴퓨터 시스템 전체를 관리함

 

1-2) 운영체제를 알아야 하는 이유

  • 운영체제가 하드웨어를 조작하고 관리하는 기능들을 제공하기 때문에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요 없이 운영체제의 도움을 받아 간편하게 개발할 수 있음
  • 운영체제와의 대화를 통해 하드웨어와 프로그램을 더 깊이 이해하고, 문제 해결의 실마리를 찾을 수 있음
  • 대표적인 운영체제와의 대화 예시는 오류 메시지(ex. 메모리 누수 현상)임

 

 

2) 운영체제의 큰 그림

2-1) 운영체제의 심장, 커널

  • 커널(kernel) : 운영체제의 핵심 서비스(자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능)를 담당하는 부분
  • 운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스도 있는데, 대표적으로 사용자 인터페이스가 있음
    • 사용자 인터페이스(UI; User Interface) : 윈도우의 바탕화면과 같이 사용자가 컴퓨터와 상호작용할 수 있는 통로
      • 그래픽 유저 인터페이스(GUI; Graphical User Interface) : 윈도우 바탕화면이나 스마트폰의 화면처럼 그래픽을 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스
      • 커맨드 라인 인터페이스(CLI; Command Line Interface) : 명령어를 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스

 

2-2) 이중 모드와 시스템 호출

  • 운영체제는 응용 프로그램들이 자원에 접근하려고 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호함(즉, 운영체제는 응용 프로그램의 자원 접근을 대행하는 일종의 문지기 역할을 한다고 볼 수 있음)
  • 이중 모드(dual mode) : CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
    • 사용자 모드(user mode) : 운영체제 서비스를 제공받을 수 없는 실행 모드임(즉, 커널 영역의 코드를 실행할 수 없는 모드임)
    • 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행되며, 이에 따라 사용자 모드로 실행되는 일반적인 응용 프로그램은 자원에 접근할 수 없음
    • 커널 모드(kernel mode) : 운영체제 서비스를 제공받을 수 있는 실행 모드(즉, 커널 영역의 코드를 실행할 수 있는 모드)
    • CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있음(운영체제는 커널 모드로 실행되기 때문에 자원에 접근할 수 있음)
  • 시스템 호출(system call) : 운영체제의 서비스를 제공받기 위해 커널 모드로 전환하는 방법
  • 시스템 호출은 일종의 인터럽트로, 정확히는 소프트웨어적인 인터럽트에 해당함
    • 소프트웨어 인터럽트 : 인터럽트는 입출력장치에 의해 발생하기도 하지만 인터럽트를 발생시키는 특정 명령어에 의해 발생하기도 하는데 이를 의미함
  • 일반적으로 응용 프로그램은 실행 과정에서 운영체제 서비스들을 매우 빈번하게 이용함(이 과정에서 빈번하게 시스템 호출을 발생시키고 사용자 모드와 커널 모드를 오가며 실행됨)

 

2-3) 운영체제의 핵심 서비스

  • 프로세스 관리
    • 프로세스(process) : 실행 중인 프로그램을 의미함
    • CPU는 한 프로세스를 실행하다가 다른 프로세스로 실행을 전환하고, 그 프로세스를 실행하다가 또 다른 프로세스로 실행을 전환하는 것을 반복함(이때 각 프로세스는 상태도, 사용하고자 하는 자원도 다양함)
    • 운영체제는 다양한 프로세스를 일목요연하게 관리하고 실행할 수 있어야 함
  • 자원 접근 및 할당
    • 모든 프로세스는 실행을 위해 자원을 필요로 함
    • 운영체제는 프로세스들이 사용할 자원에 접근하고 조작함으로써 프로세스에 필요한 자원을 할당해 줌
  • 파일 시스템 관리
    • 파일 시스템(file system) 또한 운영체제가 지원하는 핵심 서비스에 해당함
      • 파일 시스템(file system) : 컴퓨터를 사용할 때는 여러 파일을 열고, 생성하고, 삭제하곤 하는데 이 파일들을 한데 묶어 디렉터리(폴더)로 관리하는 것을 의미함

 

2-4) 가상 머신과 이중 모드의 발전

  • 가상 머신(virtual machine) : 소프트웨어적으로 만들어 낸 가상 컴퓨터를 의미함
  • 가상 머신(응용 프로그램에 해당함)과 가상 머신 상에 설치된 운영체제, 그리고 가상 머신에 설치된 응용 프로그램(웹 브라우저 등)은 모두 사용자 모드로 작동함
  • 가상화를 지원하는 CPU는 커널 모드와 사용자 모드 이외에 가상 머신을 위한 모드인 하이퍼바이저 모드를 따로 둠(이를 통해 가상 머신 상에서 작동하는 응용 프로그램들은 하이퍼바이저 모드로써 가상 머신에 설치된 운영체제로부터 운영체제 서비스를 받을 수 있음)

 

2-5) 시스템 호출의 종류

종류 시스템 호출 설명
프로세스 관리 fork() 새 자식 프로세스 생성
execve() 프로세스 실행(메모리 공간을 새로운 프로그램의 내용으로 덮어씌움)
exit() 프로세스 종료
waitpid() 자식 프로세스가 종료할 때까지 대기
파일 관리 open() 파일 열기
close() 파일 닫기
read() 파일 읽기
write() 파일 쓰기
stat() 파일 정보 획득
디렉터리 관리 chdir() 작업 디렉터리 변경
mkdir() 디렉터리 생성
rmdir() 비어 있는 디렉터리 삭제
파일 시스템 관리 mount() 파일 시스템 마운트
umount() 파일 시스템 마운트 해제