1.1 Levels and Layers of Abstraction in a Linux System layer/level: classification of components according to where theh components sit b/w the user &
이 게시글은 (함호종, 원종권 지음)을 공부하며 적은 개인 노트입니다. 1. 운영체제의 개념 운영체제: 컴퓨터 사용자와 컴퓨터 하드웨어 간 인터페이스를 담당하는 프로그램 1.1 운영체제의 역할 컴퓨터 시스템의 구성요소: 컴퓨터 사용자, 소프트웨어, 하드웨어 컴퓨
이 게시글은 <쉽게 배우는 운영체제> (함호종, 원종권 지음)을 공부하며 적은 개인 노트입니다.프로세스(Process)/태스크(Task): 실행 중인 상태의 프로그램비동기적(asynchronous) 행위실행 중인 procedure운영체제 내부에서 실행의 기본 단위
<쉽게 배우는 운영체제> 조성호 지음. 을 읽으며 작성한 개인노트입니다.가상메모리: 물리 메모리의 크기와 상관없이 메모리를 이용할 수 있도록 지원하는 기술메모리의 크기는 컴퓨터마다 다름운영체제가 물리 메모리의 크기에만 의존한다면, 컴퓨터의 메모리의 크기에 따라 프
<쉽게 배우는 운영체제> 조성호 지음. 을 읽으며 작성한 개인노트입니다.가져오기 정책: 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정한다요구 페이징 (Demand paging): 프로세스가 요청할 때 메모리로 가져오는 가져오기 정책메모리에는 꼭 필요
본 게시글은 <쉽게 배우는 운영체제> 조성호 지음.의 연습문제에 기반했습니다.여기서부터는 심화문제06 세그먼테이션-페이징 혼용 기법을 사용하는 이유를 설명하시오.
System calls: 시스템 콜, 시스템 호출소프트웨어 인터럽트의 한 종류 운영체제는 커널 모드와 사용자 모드로 나뉘어 구동CPU는 사용자 애플리케이션이 시스템을 손상시키는 것을 방지하기 위해 2가지 모드 제공CPU에 있는 Mode bit로 모드를 구분하여 0은 커
인터럽트: CPU 프로그램 실행 시 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요한 경우, 마이크로프로세서에게 알려 처리할 수 있도록 하는 것필요 이유: 입출력 연산이 CPU 명령 수행속도보다 현저히 느림 > CPU가 입출력 처리를 기다릴 시간이 없기 때
프로세스: 실행중에 있는 프로그램 의미 스케쥴링의 대상이 되는 작업/task과 같은 의미 운영체제가 자원을 할당하는 단위이기도 함최소 하나의 스레드 가짐: 스레드 단위로 스케쥴링하드디스크에 있는 프로그램을 실행하면 실행을 위해 메모리 할당이 이루어짐 > 할당된 메모리
프로세스 주소공간: 프로세스가 메모를 할당받으면 자신만의 방법으로 메모리를 관리하기 위해 이 공간을 어떤 구조로 관리함메모리는 한정되어 있음 > 프로세스는 메모리 절약 시도 영역:Stack 영역:지역변수 & 매개변수 저장함수의 호출과 함께 할당 (컴파일 타임)함수 호출
스케쥴러: 어떤 프로세스에게 자원을 할당하는지를 결정하는 운영체제 커널의 모듈장기 스케쥴러 (작업 스케쥴러)어떤 프로세스를 준비큐에 넣을 것인지 결정디스크에서 어떤 프로그램을 가져와 커널에 등록 (준비큐에 등록)할지 결정디스크에서 하나의 프로그램을 가져와 커널에 등록하
Context: 프로세스의 상태와 관련된 레지스터의 집합Context switching: 레지스터의 값을 교체하는 것싱글코어 CPU는 한번에 하나의 프로세스만 처리할 수 있음 그 프로세스가 동작하는 동안 레지스터의 값들은 모두 현재 실행중인 프로세스와 연관있음 > 다른
CPU 이용률, CPU utilization시간당 CPU를 사용한 시간의 비율프로세서를 실행상태로 항상 유지하려고 해야 함처리율, Throughput시간당 처리한 작업의 비율단위 시간당 완료되는 작업 수가 많도록 해야 함반환시간, Turnaround time프로세스가
임계 구역, Critical section: 여러 프로세스/스레드가 작업을 수행하면서 공유된 자원을 건드리게 될 수 있는데, 프로그램 코드 상에서 공유 자원에 접근하는 부분임계 구역에 여러 프로세스/스레드가 함부로 접근할 수 없도록 관리하는 방식: 세마포어, 뮤텍스 뮤
Deadlock: 두개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태상호배제, Mutual Exclusion: 자원은 한번에 한 프로세스만 사용가능함레이스 컨디션의 문제를 해결하기 위해 두 개 이상의 프로
컴파일: 소스를 기계어로 번역컴파일러: 고급언어로 작성된 프로그램을 기계어로 번역하는 것개발자가 고급언어로 프로그래밍한 코드를 CPU가 이해할 수 있게 변환해주는 것빌드: 컴파일을 포함해 프로그램을 실행 가능한 파일로 만들어주는 과정고급언어 > 어셈블리어 > 기계어 >
Inter-process Communication프로세스끼리 직접적으로 대화하지 않음 프로세스들이 서로 공간을 쉽게 접근하면 프로세스의 데이터/코드가 다른 프로세스에 의해 쉽게 바뀔 수 있음프로세스끼리 통신이 필요한 이유성능을 높이기 위해 어떤 로직을 하나의 프로세스로
Thread safe: 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수/변수/객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도
개념병렬 작업 처리 증가는 스레드 개수 증가로 직결. 스레드 생성/스케쥴링으로 인해 CPU가 바빠져 메모리 사용량 증가 애플리케이션 성능 저하 가능성병렬 작업의 폭증으로 인한 스레드의 폭증을 막으려면 스레드 풀 사용 필요 스레드 생성/수거에 대한 비용 방지 동작 원리
연속할당 방식: 프로세스를 메모리에 올릴 때 주소 공간을 분할하지 않고 물리적 메모리의 한 곳에 연속적으로 적재하는 방식고정 분할 방식: 물리적 메모리를 주어진 개수만큼의 영구적 분할로 미리 나눠두고 각 분할에 하나의 프로세스를 적재해 실행시킬 수 있도록분할의 크기는
프로세스가 원활하게 수행되기 위해서는 일정 수준 이상의 페이지 프레임을 물리적 메모리에 할당받아야 함프로세스가 동작하는데 필요한 최소한의 프레임을 받지 못하면 성능 문제 발생 Thrashing: 프로세스가 집중적으로 사용하는 페이지들의 집합이 메모리에 한꺼번에 적재되지
메모리: 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치주기억장치(내부 기억장치)와 보조 기억장치(외부 기억장치)로 분류주기억장치: 레지스터, 캐쉬 등보조 기억장치: SSD, HDD 등가상 메모리 등장 배경사용가능한 RAM 용량보다 가장 큰 실행 애플
프로그램을 실행하기 위해 코드를 디스크에서 메인 메모리로 적재하는 과정에서 단편화는 불가피함단편화가 잦으면 사용하지 못하는 메모리 공간이 많아져 낭비 최초 적합, 최적 적합, 압축 등으로 단편화를 해결할 수도 있지만 메모리 계산의 비용이 적은 페이징/세그멘테이션이 유용
페이지 테이블은 메인 메모리에 존재해서 CPU는 메인 메모리에 최소 2번은 접근해야 원하는 데이터를 얻을 수 있음1\. 페이지 테이블에 접근2\. 페이지 테이블을 기반으로 실제 메모리로 접근이 접근을 줄이고자 TLB 사용TLB(Translation Lookaside B
소프트웨어 기반 해결책이 최신 컴퓨터 아키텍쳐에서 작동하지 않을 수 있음 > 하드웨어적 해결 필요 메모리 베리어, 메모리 장벽메모리 모델: 컴퓨터 아키텍처가 응용 프로그램에게 메모리를 어떻게 제공하는가에 대한 모델강한 순서, strongly ordered: 한 프로세서
페이지 교체 알고리즘, Page Replacement Algorithm: 페이지 폴트 발생 시 backing store에서 해당 페이지를 찾아 빈 프레임에 로딩해야 하는데, 이 때 빈 프레임이 없을 경우 희생당할 프레임을 고르는 알고리즘목표: page-fault 발생
File Descriptor, FD: 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값리눅스/유닉스 계열의 시스템에서 프로세스가 파일을 다룰 때 사용하는 개념일반적으로 0이 아닌 정수값을 가짐프로세스가 실행 중에 파일을 열면 커널은 해당 프로세스의 file de
호출되는 함수의 작업 완료 여부를 신경쓰는지의 여부동기: 함수 A가 함수 B를 호출한 뒤, 함수 B의 리턴값을 계속 확인하면서 신경 씀비동기: 함수 A가 함수 B를 호출할 때 콜백 함수를 함께 전달해서, 함수 B의 작업이 완료되면 함께 보낸 콜백 함수를 실행함함수 A는