인프런 워밍업 클럽 스터디 2기 CS 1주차 발자국

운영체제

컴퓨터의 역사

애니악(진공관) -> 1950년도 초 (집적회로 개발) -> 1950년도 중후반(싱글 스트림 배치 시스템) -> 1960년도 (시분할 시스템) -> 1970년도 (개인 컴퓨터의 시작)

 

컴퓨터의 CPU 가격이 비쌌기 때문에 CPU 사용률을 끌어 올리는 쪽으로 발전

 

시분할 시스템

메모리에 여러 프로그램을 올려놓고 시간을 나누어서 빠르게 돌아가며니서 실행을 시킨다.

이 작업의 장점은 하나의 프로그램이 입력을 대기 중이더라도 다른 프로그램이 작업 중이기 때문에 CPU의 사용률이 결과적으로 올라가는 장점을 가지게 된다.

 

Unix

  • 멀티 프로그래밍

  • 다중 사용자

  • 파일 시스템

     

문제점

메모리에 여러 프로그램을 올려서 사용하기 때문에 메모리 침범 문제가 생겼다.

 

운영체제의 구조

커널이 핵심

프로세스와 메모리, 저장장치를 관리 핵심적인 기능을 담당

 

사용자는 커널에 직접 접근할 수 없고 인터페이스를 통해 접근할 수 있다.

인터페이스 -> GUI, CLI

 

어플리케이션은 시스템 콜을 통해서 커널에 접근할 수 있다.

커널은 사용자로부터 자신을 보호하기 위한 시스템 콜이라는 인터페이스를 가지고 있다.

 

컴퓨터 하드웨어와 구조

하드웨어는 프로그램 내장 방식의 폰 노이만 구조를 하고 있다.

폰노이만 구조

예전에는 하드웨어로 프로그램을 만들었기 때문에 프로그램이 달라질 때마다 매번 스위치와 배선을 다시 조정해야했다.

이를 해결하기 위해 CPU와 Memory를 두고 이들 사이를 BUS로 연결 데이터를 전달하는 통로를 말한다.

프로그램을 메모리에 내장 : 프로그램 내장 방식이라고 호칭

 

메인보드

다른 하드웨어간의 연결을 담당

 

CPU

중앙 처리 장치라고 부른다.

  • ALU 산술 논리 연산장치 : CPU에서 실제로 데이터 연산을 담당한다.

  • Contorl Unit 제어 장치: 모든 장치들의 동작을 지시하고 제어하는 장치

  • Register 레지스터: CPU내에서 계산을 위해 임시로 보관하는 장치

 

메모리의 종류

RAM, ROM

RAM : Ramdom Access Memory 전력이 끊기면 데이터를 잃어버린다. 메인 메모리로 사용된다.

ROM : Read Only Memory 전력이 끊겨도 데이터를 계속 보관할 수 있다. 데이터를 한 번 쓰면 수정이 불가능 -> 컴퓨터 부팅과 관련된 바이오스를 저장하는데 사용된다.

 

 

컴퓨터의 부팅 과정

ROM에 저잦ㅇ된 바이오스가 실행된다

주요 하드웨어 이상이 없는지 체크

이상이 없다면 마스트 부트 레코드에 저장된 Boot Loader를 메모리로 가져와서 실행합니다.

 

인터럽트

CPU가 입출력 장치에 읽거나 쓰려고 하는 상황

CPU는 입출력 작업이 들어오면 입출력 관리자에 명령, CPU는 주기적으로 입출력 관리자를 확인

polling 방식

주기적으로 CPU가 확인해 줘야하니 성능이 좋지 않다는 단점이 있다.

인터럽트는 폴링 방식의 단점을 해결한 방식

-> CPU가 입출력 관리자에 명령 -> 입출력 관리자는 입출력이 완료됬을 때 CPU에게 신호를 주고 CPU는 그 신호를 받아서 -> 인터럽트 서비스 루틴을 실행해서 작업 완료

프로세스와 쓰레드

프로그램은 컴퓨터 관점에서 하드디스크, 즉 저장장치만 사용하는 수동적 존재

  • 프로세스: 실행중인 프로그램

 

프로세스는 메모리도 사용하고 운영체제의 CPU 스케줄링 알고리즘에 따라 CPU도 사용하고 필요에 따라 입력과 출력을 하기 때문에 능동적인 존재라고 말 할 수 있다.

 

프로세스의 구조

Code 영역: 자신을 실행하는 코드가 저장

Data 영역 : 자신을 실행하는 코드 저장, 전역 변수와 Static(정적) 변수가 저장되어 있습니다.

스택 영역 : 지역 변수와 함수 호출을 했을 때 필요한 정보들이 저장된다.

Heap 영역: 프로그래머가 런타임시 할당할 수 있는 메모리 공간

 

  • 유닛 프로그래밍 : 오직 하나의 프로세스가 올라간 것

  • 멀티 프로그래밍 : 메모리에 여러 개의 프로세스가 올라온 것

  • 멀티 프로세싱 : CPU관점으로 정의, CPU가 여러 개의 프로세스를 처리하는 것

PCB(Process Control Block)

프로그램이 메모리에 올라가서 실행 중인 상태를 프로세스

운영체제는 여러 프로세스를 전부 다 관리하고 공평하게 실행 시켜야 한다.

PCB(Process Control Block)을 만들고 저장합니다.

PCB들은 연결 리스트라는 자료구조로 저장됩니다.

 

운영체제는 프로세스가 종료되면 해당 프로세스의 PCB 제거

 

프로세스 상태

image

image

  • 생성 : 메모리에 프로그램 적재를 요청

  • 준비 : CPU를 사용하기 위해 기다리고 있는 상태

  • 실행 : CPU 스케줄러에 의해 실행

  • 대기 : 입출력 요청을 하면 입출력이 완료될 때까지 기다리는 상태

  • 완료 : 프로세스가 종료된 상태

Context Switching

프로세스를 실행하는 중에 실행중인 프로세스의 값을 저장하고 다른 프로세스의 상태 값으로 교체하는 과정

 

프로세스 생성과 종료

운영체제가 시작되고 0번 프로세스를 1번 생성하게 되고 나머지 모든 프로세스는 0번 프로세스를 복사해서 쓰게 된다.

부모를 복사한 자식 프로세스의 코드와 데이터 영역을 원하는 값으로 덮어서 쓰게 된다.

 

쓰레드

프로세스는 독립적 다른 프로세스가 영향을 받지 않는다.

프로세스간의 통신은 IPC 통신 사용

쓰레드 간의 통신은 같은 프로세서의 데이터를 공유할 수 있다.

 

CPU 스케줄링

컴퓨터 자원 분배에 관한 문제를 해결하기 위한 방법

 

CPU를 할당받아 실행하는 작업을 CPU Burst, 입출력 작업을 IO Burst 라고 한다.

 

다중 큐

CPU 스케줄러는 준비상태에서 다중 큐에 들어 있는 프로세스들 중에 적당한 프로세스를 선택해서 실행상태로 전환

 

프로세스 정보를 담고 있는 PCB는 준비 상태의 다중 큐에 들어가서 실행되기를 기다리고 있고 CPU 스캐줄러에 의해 실행상태로 전환됩니다.

 

스케줄링의 목표

  1. 리소스 사용

  2. 오버헤드 최소화

  3. 공평성 - 모든 프로세스에게 공평하게 CPU가 할당 되어야한다.

  4. 처리량

  5. 대기 시간 - 작업을 요청하고 실제 작업이 이루어지는데까지 대기시간이 짧는 것을 목표로

  6. 응답시간

     

 

FIFO

First in First out

스케줄링 큐에 들어온 순서대로 실행하는 방식

 

SJF

Shortest Job First

Burst Time이 짧은 프로세스를 먼저 실행

 

RR

round robin 방식

강제로 다른 프로세스에게 일정 시간을 할당

정해진 시간만큼 동작

 

MLFQ

Multi Level Feedback Queue

여러개의 큐가 존재, 큐들은 우선 순위가 존재

 

댓글을 작성해보세요.

채널톡 아이콘