
1. CPU 스케쥴링 1) CPU스케쥴링 CPU스케쥴링 CPU 이용률을 늘리려면 멀티 프로그래밍이 필요한데 그때 필요한게 CPU 스케쥴링. OS가 CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 통해 효율적으로 관리하는 작업 → CPU가 어떤 자원을 어떤 프로세스에 어느 정도 할당할지 선택하는 작업. WHY? → 단위 시간당 작업을 마친 프로세스의 수(처리량)을 늘리기 위해 → CPU이용률을 증가시키기 위해 → 작업을 시작하기 전 대기하는 시간을 최소화 하기 위해 비선점형 스케쥴링과 선점형 스케쥴링이 있다. 2) 비선점형 스케쥴링 프로세스가 스스로 CPU 소유권을 포기하는 방식 강제로 프로세스를 중지하지 않는다. 컨텍스트 스위칭으로 인한 부하가 적다. 처리시간 편차가 적은 특정 프로세스 환경에 용이..

1. 프로세스 컴파일 1) 컴파일 인간이 이해할 수 있는 언어로 작성된 소스 코드(고수준 언어 : C, C++, Java 등)를 CPU가 이해할 수 있는 언어(저수준 언어 : 기계어)로 번역하는 작업 컴퓨터는 소스코드를 바로 해석 x -> 그래서 1과 0으로 된 기계어로 번역을 해주어야 한다. 2) 컴파일 과정 ① 전처리 ( Preprocessing ) 전처리기를 통해 소스코드파일(.c)을 전처리된 소스코드 파일(.i)로 변환시키는 과정 소스코드 주석제거 : 주석은 컴퓨터에게 필요없는 내용이여서 제거. 헤더파일 병합 : #include 지시문을 통해 해당 헤더 파일을 찾아 헤더 파일에 있는 모든 내용을 복사해서 소스 코드에 삽입 매크로 치환 : #define 지시문에 정의된 매크로를 저장하고 같은 문자열..

1. 페이지교체 알고리즘 가상메모리 구현하는 방법에는 요구페이징 방식이 있다. 요구페이징 방식 → 페이지 부재가 발생한다 ▶ 페이징 작업은 오버헤드가 동반되기 때문에 페이지 교체는 적게 일어나야한다. ▶ 그래서 페이지교체 알고리즘을 사용한다. → 페이지의 부재율을 최소화 * 페이지 부재 - 물리적 메모리에 빈 프레임이 존재하지 않을 때, 메모리에 올라와 있는 페이지 중 하나를 선택해서 디스크의 스왑 영역으로 보내는 것 * 오버헤드 - 프로그램의 실행흐름 도중에 동떨어진 위치의 코드를 실행시켜야 할 때 , 추가적으로 시간,메모리,자원이 사용되는 현상 1) 오프라인 알고리즘( LFD, Longest Forward Distance ) 가장 좋은 알고리즘이라고 일컫는 알고리즘 가장 먼 미래에 참조되는 페이지와 ..

1. 메모리계층 ( =기억장치 계층 ) 메모리를 필요에 따라 여러가지 종류로 나누어 두는 것 → CPU가 메모리에 더 빨리 접근 가능함 메모리 계층 구조를 바탕으로 컴퓨터의 설계에 있어 상황에 맞게 여러 저장 장치를 각각의 역할이나 특징을 기반으로 사용할 수 있도록 하여 최적의 효율을 낼 수 있도록 한다. ▶ 기억장치를 구성하는데 있어서 가격은 최소화 하면서 가능한 속도는 빠른 접근속도와 대용량의 크기를 제공하기 위해 → 입출력의 경제성 확보 1) 메모리계층 구조 ① 레지스터 CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치 프로세서에 위치한 고속 메모리로, 프로세스가 바로 사용할 수 있는 데이터를 담고 있는 영역 CPU 내의 작은 메모리 특징 기억력 휘발성 속도 가장 빠름 기억 ..

1. 운영체제와 컴퓨터 시스템 구조 1) 운영체제 사용자가 컴퓨터를 사용하기 위한 소프트웨어 프로그램에 필요한 자원을 할당해준다 프로그램이 올바르게 실행되도록 돕는다 종류 : GUI, CUI ① GUI ( Graphical User Interface ) 그래픽을 사용하여 컴퓨터와 상호작용하는 인터페이스 ex ) window OS, Mac OS => 현재 사용되는 OS ② CUI ( Character User Interface ) 사용자가 키보드만을 사용하여 문자를 기반으로 컴퓨터와 상호작용하는 인터페이스 ex ) MS-DOS, chatGPT 2) 운영체제 역할 & 목적 ① 자원관리 컴퓨터 시스템 자원 효율적 관리 메모리관리 디스크파일 관리 I/O디바이스 관리 CPU 스케줄링과 프로세스 상태 관리 ② 자원..