운영체제 정리

Jongwon·2021년 11월 28일
0

Linux Programming

목록 보기
4/25

운영체제의 동작

컴퓨터를 처음 부팅하면 커널이 메모리에 적재됨.
이후 커널은 계속 적재되어 있고, 응용 프로그램이 시스템 호출로 하드웨어 자원을 요청하면 커널이 서비스를 제공함

운영체제 설계 시 고려사항

  1. RAM보다 큰 프로그램 실행하고 싶을 때
    • 사용하는 부분만 메모리에 적재하고, 나머지는 HDD의 Swap Area에 저장
  2. 함께 실행되는 프로세스 보호
    • 메모리를 가상화하여, 하나의 프로세스가 자신만이 사용하는 메모리가 있다고 생각하게 만들고 메모리를 초과하면 그 프로세스만 종료되도록 함.

커널(Kernel)

운영체제의 핵심 기능의 집합

프로세스 vs 프로그램

프로세스프로그램
- 실행중인 프로그램
- 자원 소유의 단위
- 프로그램 실행 환경
- 수행할 작업에 대한 명세

운영체제의 역할

  • 가상 머신
    • 하드웨어를 가상화하여 응용프로그램이 하드웨어에 대한 자세한 정보를 알고 직접 제어할 필요 없이 응용프로그램에 시스템 호출(System Call)이라는 인터페이스를 제공하여 커널이 접근하도록 한다.
      보안과 프로그래밍 효율을 위해 필요함, 응용프로그램이 직접 접근한다면 충돌 발생가능
  • 자원 관리
    • CPU 자원 관리: 스케줄링을 통해 여러 프로세스를 동시에 실행
    • 메모리 자원 관리: Paging을 통해 가상 메모리를 지원하고, 메모리 할당과 해제를 결정함
    • 기타 자원 관리: 기타 디바이스(마우스, 모니터 등)을 응용프로그램이 관리하는 것이 아니라 운영체제가 관리하여 충돌을 방지하고, 불법적인 접근을 차단한다.
  • 통신 제공
    • 여러 이벤트를 받고 처리함(인터럽트, 시스템호출, 트랩)
    • 이벤트 발생 시 해당 운영체제의 컴포넌트나 응용프로그램에 전달
    • 기타 프로세스간 통신 처리
      인터럽트: 입출력 하드웨어 장치나, 예외상황 처리를 해야할 때 CPU에게 알려 처리하도록함
      트랩: CPU에서 에러 발생하면 운영체제에 점프하고 프로세스를 죽임
  • 유저 인터페이스 제공


사실 쉘과 라이브러리 역시 응용프로그램에 포함된다.

시스템 호출
커널이 제공하는 서비스에 대한 프로그래밍 인터페이스로, 프로그래밍이 간편하도록 하고, 디바이스 및 프로세스를 보호한다.

사용자와 운영체제 사이의 인터페이스로, 사용자의 명령을 받고 해석하여 실행한다. 그래픽 쉘과 텍스트 쉘로 나뉜다.







참고문헌
https://velog.io/@adam2/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8

profile
Backend Engineer

0개의 댓글