[컴퓨터 구조] 운영체제에 대해서

Yong·2023년 8월 6일
0

홍공컴운

목록 보기
4/6

9장. 운영체제 시작하기

1. 운영체제를 알아야하는 이유

운영체제란 실행할 프로그램에 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이다.
운영체제는 커널 영역이라는 공간에 따로 적재되어 실행된다. 커널 영역을 제외한 나머지 영역은 사용자 영역이라고 한다. 사용자 영역에는 응용 프로그램이 적재 된다.
응용 프로그램이 실행,종료 될 때 운영체제가 사용자 영역에 적절하게 적재하고 삭제해준다. 그리고 CPU 사용량이나 입출력 장치에 대한 자원을 관리한다.

운영체제를 알면 하드웨어와 프로그램을 더 깊게 이해하고 문제 해결의 실마리를 찾을 수 있다. 현재 하드웨어의 상태를 확인하고 우리(개발자)의 코드가 어떻게 실행되었는지 등을 상세히 알 수 있다.

2. 운영체제의 큰 그림

운영체제의 심장, 커널

운영체제의 커널은 컴퓨터 운영체제의 핵심이 되는 프로그램이다. 커널은 운영체제의 다른 부분과 하드웨어와 통신하고 자원을 관리하는 기능을 한다. 사용자 인터페이스(UI)는 커널에 포함되지 않는다.

이중 모드와 시스템 호출

운영체제는 응용 프로그램이 하드웨어 자원지 직접 접근하는 것을 방지하여 자원을 보호한다. 항상 자신을 통해서 자원에 접근할 수 있도록 하여 보안과 안정성을 높인다.

이중 모드란 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식이다.
사용자 모드는 시스템 자원에 접근이 불가능하고 커널 모드는 운영체제의 서비스를 제공 받아 코드를 실행할 수 있는 모드이다.즉 자원에 접근하여 명령어를 실행할 수 있다.

10장. 프로세스와 스레드

1. 프로세스 개요

운영체제의 프로세스란 실행중인 프로그램을 말한다. 프로세스란 운영체제가 관리하고 제어하는 대상이며 CPU와 다른 자원들을 사용한다.

프로세스 제어 블록

운영체제는 한정된 CPU의 자원을 사용하기 위해서 프로세스 제어 블록(PCB)을 이용한다. 프로세스를 식별하고 해당 프로세스를 처리하는 데 필요한 정보를 판단하기 위해 사용한도. PCB는 커널영역에서 만들어지고 실행이 끝나면 폐기 된다.

  • PCB에 담기는 정보들: 프로세스 ID, 레지스터 값, 프로세스 상태, CPU 스케줄링 정보, 메모리 관리 정보, 사용한 파일과 입출력장치 목록

문맥 교환

프로세스는 우선 순위에 따라 실행 순서가 갑작스럽게 다른 프로세스로 넘어갈 수 있다. 이 때 프로세스간 전환을 하여 프로세스를 실행하는 것을 문맥 교환이라고 한다. 프로세스 수행을 재개하기 위해 기억해야 할 정보를 문맥이라고 한다.

프로세스의 메모리 영역

프로세스의 메모리 영역은 프로세스가 실행되는 동안 사용하는 메모리 공간을 말한다. 메모리의 사용자 영역에 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장된다.

  • 코드 영역: 명령어들이 저장되는 영역이다. CPU가 실행할 명령어가 담겨있기 때문에 읽기 전용으로 보호된다.
  • 데이터 영역: 프로그램의 전역변수와 정적 변수들이 저장되는 영역이다. 컴파일이 될 때 크기가 결졍되고 바뀔 일이 없으니 정적 할당 영역이라고도 부른다.
  • 힙 영역: 프로그램에 따라 동적으로 메모리를 할당하고 해제하는 영역이다. 프로그래머가 직접 관리해야하는 영역이고 메모리 공간을 반환하지 않는다면 메모리 누수 문제를 초래한다.
  • 스택 영역: 데이터를 일시적으로 저장하는 영역이다. 지역 변수와 매개 변수들이 저장되는 영역이다. LIFO구조로 관리 된다.

2. 프로세스 상태와 계층 구조

프로세스 상태

컴퓨터를 사용하면 프로세스들이 빠르게 번갈아 가면서 실행된다. 그 결과로 하나의 프로세스는 여러 상태를 거치며 실행된다.

  • 생성 상태: 메모리에 적재 되어 PCB를 할당 받은 상태.
  • 준비 상태: CPU를 할당 받아 실행할 수 있지만 차례가 아닌 상태다.
  • 실행 상태: CPU를 할당 받아 실행 중인 상태.
  • 대기 상태: 입출력 장치가 입출력을 끝낼 때까지 기다려야한다. 이 상태를 대기 상태라고 한다.
  • 종료 상태: 프로세스가 종료되면 운영체제는 PCB를 삭제하고 메모리를 정리한다.

프로세스 계층 구조

프로세스는 실행 도중 시스템 호출을 통해 다른 프로세스를 생성할 수 있다. 이때 새 프로세스를 생성한 프로세스를 부모 프로세스, 부모 프로세스에 의해 생성된 프로세스를 자식 프로세스라고 한다.

3. 스레드

프로세스와 스레드

스레드는 실행의 단위다. 스레드를 사용하면 하나의 프로세스에서 여러 부분을 동시에 실행할 수 있다.

  • 단일 스레드 프로세스: 한번에 한 부분만 실행되는 프로세스, 실행의 흐름 단위가 하나.
  • 멀티 스레드 프로세스: 한번에 여러 일을 동시에 처리. 여러 명령어를 동시에 실행.

11장. CPU 스케줄링

1. CPU 스케줄링 개요

프로세스가 CPU를 사용하는 순서를 결정하는 것을 말한다. 여러 프로세스가 CPU를 사용해야하는 환경에서 CPU 자원을 배분하는 것을 CPU 스케줄링이라고 한다. CPU 스케줄링은 운영체제에서 관리된다.

프로세스 우선 순위

프로세스가 CPU를 사용하는 순서를 결정하는 것을 말한다. 높은 우선순위를 가진 프로세스일수록 먼저 처리되어야한다. 대부분의 프로세스는 입출력장치와 CPU를 사용하며 실행된다. CPU를 이용하는 시간의 양에는 차이가 있다. 입출력 집중 프로세스가 있고, CPU 집중 프로세스가 있다. 입출력이 프로세스에서는 CPU가 대기 상태에 머무르게되고 CPU 집중 프로세스는 실행 상태에 많이 머무르게 된다. CPU는 효율적으로 사용되기 위해서 입출력 집중 프로세스를 우선적으로 처리하고 CPU집중 프로세스를 처리하게 된다.

스케줄링 큐

스케줄링의 우선순위는 PCB에 저장되는데, 운영체제가 일일이 우선순위를 확인하는 것은 번거럽고 오래걸리는 작업일 수 있다. 운영체제는 스케줄링 큐로 실행되어야할 프로세스을 줄세운다.
준비 큐는 CPU 할당을 기다리는 프로세스들을 위한 큐이고, 대기 큐는 입출력장치를 기다리는 프로세스들을 위한 큐를 의미한다.

선점형과 비선점형 스케줄링

우선적으로 실행되어야할 프로세스는 운영체제가 다른 프로세스로부터 CPU할당을 빼았아서 실행시킬 수도 있고, 이전 프로세스의 작업이 끝날때 까지 프로세스를 기다리게 할 수 있다.

  • 선점형 스케줄링: 선점형 스케줄링은 어떤 프로세스가 CPU를 사용하고 있어도 운영체제가 다른 프로세스에게 CPU를 강제로 넘겨줄 수 있는 방식이다.
  • 비선점형 스케줄링: 비선점형 스케줄링은 어떤 프로세스가 CPU를 할당받으면 그 프로세스가 종료되거나 자발적으로 중지될 때까지 CPU를 계속 사용하는 방식이다.

미션

p.304 확인 문제

profile
If I can do it, you can do it.

0개의 댓글