핵심적인 기능을 하는 커널과 부가적인 기능을 하는 여러 프로그램이 합쳐져 있는 시스템 소프트웨어


1. 정의

  • 시스템 자원(하드웨어)들을 효율적으로 관리
  • 사용자와 하드웨어 사이의 인터페이스를 제공
  • 응용프로그램(운영체제위에서 돌아가는 프로그램)이 원활하게 동작하도록 지원하는 시스템 소프트웨어



2. 목적(시스템 자원을 관리하고, 응용프로그램을 관리하는 이유)

사용자가 사용하는 응용프로그램이 적절하게 동작하도록 지원
=> 응용프로그램이 CPU를 독점하거나 반복실행하게 만들 수 있음 => 사용자가 원하는 응용프로그램이 적절하게 동작할 수 없음 



3. OS의 역할

Q. 응용프로그램이 하드웨어에 직접 접근하지 않는다면 어떻게 하드웨어 자원을 사용할 수 있을까?
A. 운영체제가 필요한 자원을 응용프로그램에게 할당
  • 프로세스 관리  : 프로세스 생성과 종료
  • 자원 접근과 할당
    1. CPU : CPU는 한번에 하나의 프로세스를 실행 -> 다른 프로세스가 CPU를 사용하기 위해 기다려야 하는데 이때 운영체제에서 스케줄링을 처리
    2. 메모리 : 프로세스의 크기 등을 고려하여 메모리의 어떤 주소에 적재할지 결정
    3. 입출력장치 : CPU에 인터럽트 요청 신호를 보내면 CPU는 커널 영역에 있는 인터럽트 서비스 루틴을 실행
  • 파일시스템 관리


4. shell(쉘)

  • 사용자가 하드웨어를 조작할 수 있도록 인터페이스를 제공하는 프로그램
  • CLI와 GUI 환경으로 분류
  • 명력을 해석, 명령을 실행(커널에 명령을 전달하기 위해서는 커널이 이해할 수 있는 언어로 전달해야함)



5. kernel(커널)

  • 하드웨어를 관리하는 OS의 핵심(핵심 서비스를 담당)으로 OS의 가장 아래 계층에서 돌아감
  • 커널 위에 여러 소프트웨어 계층을 올린 것
  • 하드웨어 자원을 필요한 프로세스에 나눠줌 : 프로세스 제어, 메모리 제어, 프로그램이 운영 체제에 요구하는 시스템 콜 등을 수행
  • 사용자가 실행하는 응용프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호
    (응용프로그램이 자원에 직접 접근하여 조작하면 자원이 무분별하게 관리되고 하드웨어 전체에 악영향을 끼칠 수 있음)
사용자 인터페이스 미지원 : 사용자와 컴퓨터의 상호작용은 지원하지 않음 (운영체제는 인터페이스를 제공, 커널에는 포함되지 않음)



6. 이중 모드(사용자 모드 - 커널 모드)

CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분하는 방식
CPU에 명령어와 CPU Protection Ring의 level 정보가 같이 전달되고, level 정보에 따라서 실행 여부가 결정됨

 

  1. 사용자 모드 (level 3)
    • 운영체제의 서비스를 제공받을 수 없는 실행 모드
    •  커널 영역의 코드를 실행할 수 없는 모드
  2. 커널 모드 (level 0)
    • 운영체제 서비스를 제공 받을 수 있는 실행 모드
    • 커널 영역의 코드를 실행할 수 있는 모드
    • CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 포함한 모든 명령어를 실행할 수 있음



7. 시스템 콜

  1. 정의
    • 쉘과 커널이 커뮤니케이션 하기 위한 인터페이스
    • 사용자모드에서 커널모드로 전환하기 위한 요청으로 소프트웨어 인터럽트(인터럽트를 발생시키는 특정 명령어에 의해 발생)
  2. 동작과정
    • 사용자가 쉘을 사용해 명령을 하면 쉘은 커널에 요청을 하고 요청 결과를 쉘프로그램으로 전달, 쉘은 사용자가 요청 결과를 볼 수 있게 화면에 처리
    • 응용프로그램 실행 과정에서 운영체제 서비스를 빈번하게 이용 → 시스템콜이 빈번하게 발생하고 사용자 모드와 커널 모드를 오가며 응용프로그램이 실행됨
  3. 특징
    •  운영체제별로 시스템콜을 호출할 수 있는 API 구현이 다름(시스템콜도 운영체제별로 다름)

 

8. 시스템 콜 발생 후

  1. CPU
    • 진행중이던 작업을 백업하고 커널 영역 내에 시스템 콜을 수행하는 코드를 실행
    • 운영체제 코드를 실행한 후 다시 기존에 진행하던 응용프로그램으로 복귀해 작업을 실행
  2. 운영체제
    • 응용프로그램 대신 자원에 접근하여 요청한 작업을 대신 수행(완료후 다시 사용자모드)

 

 

Reference

https://hongong.hanbit.co.kr/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%9E%80-%EC%BB%A4%EB%84%90%EC%9D%98-%EA%B0%9C%EB%85%90-%EC%9D%91%EC%9A%A9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%8B%A4%ED%96%89%EC%9D%84-%EC%9C%84%ED%95%9C/
https://namu.wiki/w/%EC%BB%A4%EB%84%90(%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C)

'Dev-log > 운영체제' 카테고리의 다른 글

프로세스 & 프로세스 스케줄링  (0) 2024.08.11

+ Recent posts