#9. 컴퓨터 구조 및 운영체제

Maengkkong·2023년 12월 21일
0

스터디

목록 보기
9/14

운영체제란?

시스템 자원
: 프로그램 실행에 마따히 필요한 요소들
: 프로그램이 실행되기 위해 반드시 자원이 필요하다.

운영체제(Operating System)
: 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램

커널 영역(kernel space)
: 운영체제는 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역에 따로 적재되어 실행

사용자 영역(user space)
: 사용자가 이용하는 응용 프로그램이 적재되는 영역

응용 프로그램(application software)
: 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램

운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 올바르게 실행되도록 돕는다.
실행할 프로그램을 메모리에 적재하고, 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리

커널(Kernel)

커널은 프로그램이 올바르고 안전하게 실행되게 하는 기능이며 운영체제의 핵심 서비스이다.

커널에 따라 프로그램이 하드웨어를 이용하는 양상이 달라진다.
결과적으로 컴퓨터 정체 성능도 달라진다.

사용자 인터페이스(UI : User Interface)

: 사용자가 컴퓨터와 상호작용할 수 있는 통로
: 커널에 속하지 않은 기능

  • 그래픽 유저 인터페이스(GUI : Graphical User Interface)
    : 그래픽 기반 컴퓨터와 상호작용할 수 있는 인터페이스

  • 커맨드 라인 인터페이스(CLI : Command Line Interface)
    : 명령어 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스

이중 모드와 시스템 호출

운영체제는 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근한느 것을 방지하여 자원을 보호한다.

  • 이중 모드(dual mode)
    CPU가 명령어를 실행하는 모드를 크게 1)사용자 모드2)커널 모드로 구분하는 방식

1. 사용자 모드(user mode)
: 운영체제 서비스를 제공받을 수 없는 실행 모드(즉, 커널 모드를 실행할 수 없는 모드)
: 일반적으로 응용 프로그램은 기본적으로 사용자 모드이다.
: CPU는 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없다. 그래서 사용자 모드로 실행되는 일반적인 응요 프로그램은 자원에 접근할 수 없다.

사용자 모드인 프로그램이 자원에 접근하는 운영체제 서비스를 제공받으려면 운영 체제에 요청 > 커널 모드로 전환해야 한다.

  • 이때 운영체제 서비스를 제공받기 위한 요청 = 시스템 호출(System call)이라고 한다.
  • 시스템 호출은 소프트웨어 인터럽트이다.
    : 소프트웨어 인터럽트는 입출력장치에 의해 발생하기도 하지만 특정 명령어에 의해 발생하기도 한다.
    : 시스템 호출 처리 순서는 인터럽트 처리 순서와 유사하다.

<시스템 호출 처리 순서>
1. 하드 디스크에 데이터 저장하는 시스템 호출 발생
2. 커널모드 전환
3. 운영체제 내 '하드 디스크에 데이터 저장하는 코드'를 실행
4. 하드 디스크에 접근
5. 하드 디스크 접근 완료 후 사용자 모드로 복귀 및 실행


2. 커널 모드(kernel mode)
: 운영체제 서비스를 제공받을 수 있는 실행 모드(즉, 커널 모드를 실행할 수 있는 모드)
: CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행
: 자원에 접근 가능


운영체제의 핵심 서비스

프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리

  • 프로세스 관리
    프로세스(Process) = 실행중인 프로그램

자원 접근 및 할당
모든 프로세스는 실행을 위해 자원이 필요하다.

1. CPU
: CPU는 한 번에 하나의 프로세스만 실행 가능 (CPU는 프로세스들을 번갈아 가며 실행)
: CPU 스케줄링 = 어떤 프로세스부터 CPU를 이용하게 할 것인지, 얼마나 오래 CPU를 이용할 지 결정할 수 있도록 하는 것

2. Memory
: 메모리에 적재된 프로세스 크기와 주소가 다양하다. 운영체제는 새로운 프로세스가 적재될 때마다 어느 주소에 적재해야 할지를 결정해야 한다.

3. I/O
: 운영체제는 인터럽트를 처리하는 프로그램, 즉 인터럽트 서비스 루틴을 제공함으로써 입출력 작업을 수행


파일 시스템(file system) 관리
파일 시스템 = 파일을 한데 묶어 폴더에 관리


가상 머신(Virtual machine)

소프트웨어적으로 만들어낸 가상 컴퓨터
가상 머신을 통한 가상화를 지원하는 현대 CPU는 2가지 이상을 지원한다.

운영체제에서 가상 머신 설치 및 실행한다면 가상 머신 또한 응용 프로그램이다. 이는 사용자 모드로 작동한다.

가상화를 지원하는 CPU는 가상 머신을 위한 파이퍼 바이저 모드를 따로 두어 운영체제 서비스를 받을 수 있다.


시스템 호출 종류

  • 프로세스 관리
    fork() : 새 자식 프로세스 생성
    execve() : 프로세스 실행(메모리 공간을 새로운 프로그램의 내용으로 덮어씌움)
    exit() : 프로세스 종료
    waitpid() : 자식 프로세스가 종료할 때까지 대기

  • 파일 관리
    open() : 파일 열기
    close() : 파일 닫기
    read() : 파일 읽기
    write() : 파일 쓰기
    stat() : 파일 정보 획득

  • 디렉터리 관리
    chdir() : 작업 디렉터리 변경
    mkdir() : 디렉터리 생성
    rmdir() : 비어 있는 디렉터리 삭제

  • 파일 시스템 관리
    mount() : 파일 시스템 마운트
    umount() : 파일 시스템 마운트 해제


혼자 공부하는 컴퓨터구조 + 운영체제
09. 운영체제 시작하기 (260p - 280p)

0개의 댓글