[운영체제] OS의 작동

Seokjun Moon·2023년 3월 31일
0

운영체제

목록 보기
3/23
post-custom-banner

작동 과정

1. Bootstrap Program

시스템을 초기화하기 위한 간단한 코드입니다. kernel을 로드합니다. 일반적으로 ROM 또는 EEPROM 에 저장되어 있습니다.

2. Kernel loads

디스크에 있는 커널 코드를 메모리로 이동시킵니다.

3. Starts system daemon

커널 밖에서 제공되는 서비스들을 시작합니다.

  • 커널이 실행 중일 때 항상 실행됩니다.
  • systemd는 리눅스 커널에서 가장 처음 로드되는 system daemon 입니다. 해당 daemon은 다른 daemon들을 시작합니다.

4. Kernel interrupt driven

  • Hardware interrupt : 디바이스에 의해 발생
  • Software interrupt (trap or exception) : 에러, 시스템콜, 무한루프 등 의 이유로 발생




Multi-Programming (Batch System)

한 번에 여러 개의 프로그램을 실행하는 것을 지원하는 것 입니다. CPU와 I/O 디바이스는 항상 바쁜 상태여야 합니다. 하지만 하나의 유저만으로는 충족시키기 어렵습니다. 이를 보안하기 위해 Multiprogramming은 jobs(코드와 데이터)는 작업을 정리하여 CPU가 항상 실행 중인 상태로 유지할 수 있도록 도와줍니다.

job scheduling

모든 job은 메모리에 존재해야 합니다. 그리고 하나의 job을 선택하여 실행하는데, 이걸 job scheduling 이라고 합니다.

메모리 최상부에는 커널이 존재하고, 이 후로 프로세스가 들어있는 메모리 구조를 가지고 있습니다.




Multi-Tasking (Time-Sharing)

시간을 아주 짧게 나누고 빠르게 전환하는 것을 의미합니다. 즉, 여러 개의 프로그램이 동시에 실행되는 것처럼 보이도록 하는 것을 말합니다.
실행 중인 프로세스의 메모리 합이 물리적 메모리 합보다 클 경우, swapping을 통해 가상 메모리(virtual memory)를 오가며 실행됩니다.




Dual-mode Operation

OS와 다른 시스템 요소들을 보호합니다. User modeKernel mode 로 나뉩니다. 두 모드는 모드 비트로 구분할 수 있습니다. 모드 비트는 하드웨어가 제공합니다.

사용자 프로그램이 커널 코드를 호출한다면?

시스템 콜을 사용합니다. privileged 명령어는 kernel 모드에서만 실행 가능하게 미리 지정되어 있는 명령어입니다. 시스템 콜을 사용한 모드 전환 과정은 다음과 같습니다.




Timer

최대 실행 시간을 지정해두어서 무한 루프에 걸려 자원을 독점하는 상황을 막습니다. 물리적 clock을 사용하여 시간을 카운트 합니다. 카운터와 관련된 명령어는 privileged instruction 입니다. 카운터가 0이 되면 인터럽트를 발생시킵니다.

profile
차근차근 천천히
post-custom-banner

0개의 댓글