[혼공컴운] Chap 9. 운영체제

반디·2023년 2월 5일
1

컴구/OS

목록 보기
6/9

운영체제

실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램

  • 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 이들이 올바르게 실행되도록 도움
  • 실행할 프로그램을 메모리에 적재하고 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하여 지속적으로 메모리 자원을 관리
  • 프로그램에 CPU 자원을 할당
  • 관리할 자원별로 기능이 나누어져 있음

    https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/2_Structures.html

커널

  • 운영체제의 핵심 서비스를 담당하는 부분, 프로그래밍이 올바르고 안전하게 실행되도록 함
  • 어떤 커널을 사용하느지에 따라 프로그램이 하드웨어를 이용하는 양상이 달라지고, 결과적으로 컴퓨터 전체 성능이 달라질 수 있음

Note. 운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스

  • 사용자 인터페이스: 사용자가 컴퓨터와 상호작용할 수 있는 통로 (커널에 포함되지 않는 서비스)
    - 그래픽 유저 인터페이스(GUI)
    - 커맨드 라인 인터페이스(CLI)

이중 모드

응용 프로그램이 실행 과정에서 HDD에 접근하여 데이터를 저장하려면 운영체제에 도움을 요청해야 하고, 운영체제는 커널 영역 내의 HDD에 데이터를 저장하는 코드를 실행하여 응용 프로그램의 작업을 대신 수행
이러한 운영체제의 문지기 역할은 이중 모드로써 구현됨

이중모드: CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식

  • 사용자 모드: 운영체제 서비스를 제공받을 수 없는 실행 모드 (즉, 커널 영역의 코드를 실행할 수 없는 모드)
    • 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행
    • 사용자 모드로 실행 중인 CPU는 하드웨어 자원에 접근하는 명령어를 실행할 수 없음
  • 커널 모드: 운영체제 서비스를 제공받을 수 있는 실행 모드 (커널 영역의 코드 실행가능)
    • CPU가 커널 모드로 명령어를 실행하면 모든 명령어를 실행할 수 있음
    • 운영체제는 커널 모드로 실행되므로 자원에 접근 가능
  • 시스템 호출(시스템 콜): 운영체제 서비스를 제공받기 위한 요청

    사용자 모드로 실행되는 프로그램 시스템 호출\xrightarrow[]{\text{시스템 호출}} 커널 모드 전환

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

ex) 응용 프로그램이 HDD에 데이터를 저장하는 작업을 수행
step 1. 응용 프로그램은 HDD에 데이터를 저장하는 시스템 호출을 발생시켜 커널모드로 전환
step 2. 운영체제 내의 'HDD에 데이터를 저장하는 코드'를 실행함으로써 HDD에 접근
step 3. HDD에 접근이 끝났다면 다시 사용자 모드로 복귀하여 실행을 지속

https://data-flair.training/blogs/system-call-in-os/

운영체제의 핵심 서비스

  • 프로세스 관리: 다양한 프로세스를 관리\cdot실행
  • 자원 접근 및 할당: CPU 스케줄링, 메모리 할당, 인터럽트 서비스 루틴
  • 파일 시스템 관리

참고문헌
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=299014282&start=slayer

profile
꾸준히!

0개의 댓글