CS/운영체제 18

메모리 단편화

내부단편화 주 기억장치에서 가용한 공간에 프로세스를 할당하고 남은 영역이 생기는 것 외부단편화 주 기억장치에서 가용한 공간의 합은 프로세스의 크기보다 크지만, 나누어져 있어서 프로세스를 올릴 수 없는 경우. 해결방법 1. 압축 : 주기억장치 내 분산되어 있는 공간을 압축하여 큰 공간 하나를 만드는것 2. 페이징기법 : 프로세스를 "페이지"로 나누고, 주기억 장치를 "프레임"으로 나누어 프로그램을 실행시 페이지 단위로 프레임에 옮기는 기법

CS/운영체제 2023.11.13

[페이지교체 알고리즘]

페이지 교체 알고리즘 페이징 기법으로 메모리를 관리하는 운영체제에서 페이지의 부재가 발생하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지 결정하는 방법. FIFO(Fist In Fist Out) 알고리즘 - 가장 먼저 들어온 페이지를 교체 - 그림 LRU(Least Recently Used) 알고리즘 - 가장 오랫동안 사용하지 않은 페이지를 교체하는 것 - 그림 LFU(Least Frequently Used) 알고리즘 - 참조횟수가 가장 적은 페이지 교체하는 것 - 그림 MFU(Most Frequently Used) 알고리즘 - 가장 많이 참조된 페이지를 교체하는 알고리즘 - 그림 OPT(Optimal) 알고리즘 - 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 알고리..

CS/운영체제 2023.04.23

[가상메모리] 가상메모리, 요구페이징

가상메모리- 메모리가 실제 메모리보다 많이 보이게 하는 기술 - 가상메모리, 메모리맵, 물리메모리 로 구성됨 - 필요한 데이터중 실제메모리에 없는 데이터는 디스크(backing store)에서 가져옴 요구페이징(demand paging)- 프로세스의 페이지 전체를 메모리에 올리지 않고, CPU가 요청할 때 필요한 일부 페이지만 메모리에 올리는 것을 의미 페이지 폴트(page faults)- 어떤 페이지에 접근하려고 했을 때 해당 페이지가 실제 물리 메모리에 부재할 때 때 뜨는 인터럽트 - 페이지 폴트시 동작순서 (운영체제가 페이지폴트 해결 후 동일 명령을 다시 수행함)- 페이지 폴트 발생 후 물리메모리가 가득 차면, 페이징교체 알고리즘이 수행된다.

CS/운영체제 2023.04.23

DEADLOCK의 정의, 조건, 해결책

DEADLOCK(교착상태) 이란 둘 이상의 프로세스가 각자 서로가 필요한 자원을 점유한 상태로 무한정 대기하는 상황 DEADLOCK 발생조건 다음 네 조건을 만족하면 데드락에 빠질 수 있는 가능성이 있다. 1. 상호배제 : 자원들은 한 프로세스만 점유할 수 있다. 2. 점유대기 : 특정 프로세스에게 쓰이고 있는 자원이 다른 프로세스에게도 필요하여 대기하는 다른 프로세스가 존재 3. 비선점 : 다른 프로세스가 자원을 점유하고 있을 때 강제로 뻇을 수 없다 4. 순환대기 : 프로세스 P0,P1,P2...Pn 이 존재할 때, Pk-1이 Pk가 필요한 자원을 가지고(Pn은 P0가 필요한 자원보유) 있는 상황 DEADLOCK 해결 1. 예방법(데드락 상태를 사전에 예방, 조건에 대한 부정) 1.1 상호배제 부정 ..

CS/운영체제 2023.03.16

전통적 동기화 예제들

생산자 소비자 문제(Producer and Consumer Problem) * 다른말로 유한버퍼문제(bounded buffer problem) - 생산자(producer)는 버퍼에 데이터를 생산하고, 소비자(consumer)는 버퍼에 데이터를 소비하는 상황 - 버퍼는 유한하기 때문에 버퍼에 데이터가 가득 차면 생산자가 생산할 수 없고, 비어있으면 소비자가 꺼내갈 수 없다.(이 상황에서 프로세스가 계속 대기하는 것을 busy waiting 이라고 한다) 독자 저자 문제(Readers Writers problem) - 독자(reader)는 데이터를 읽기만 하고, 저자(writer)는 읽고 수정하는 상황 - reader는 데이터를 읽기만 하기 때문에 임계구역 문제가 발생하지 않음. 따라서 writer에만 임계..

CS/운영체제 2023.03.16

임계구역(critical section)문제와 뮤텍스(mutex), 세마포어(semaphores)

임계구역 문제(the critical section problem) 멀티 프로세스가 공유자원을 사용하는 과정에서 발생하는 문제들. 다양한 프로세스가 공유자원(공통변수)를 건들이면서 데이터의 정합성이 깨지는 현상 * 임계구역 : 공유자원에 접근하는 코드 영역 임계구역 문제의 해결 조건 임계구역 문제를 해결하기 위해선 다음의 조건을 만족해야 한다. 1. 상호배제(mutual exclusion) : 특정 임계구역에서 프로세스가 실행되고 있으면, 다른 프로세스는 해당 임계구역에서 실행될 수 없음 2. 진행(progress) : 임계구역이 비어있을 때 프로세스는 무한정 기다리지 않고 순서에 맞게 진행된다. 3. 한정된 대기(bounded waiting) : 프로세스가 임계구역에 진입하려는 요청을 한 후 그 요청이..

CS/운영체제 2023.03.10

CPU 스케쥴링

CPU 스케쥴링 - CPU(특히 여러 코어의 CPU)의 이용률을 극대화 하기위해 CPU사용 순서 혹은 규칙을 정하는 알고리즘 디스패처 - CPU 코어의 제어를 CPU 스케줄러가 선택한 프로세스에 주는 모듈 - 한 프로세스에서 다른 프로세스로 문맥을 교환하는 일 - 사용자 모드로 전환하는 일 - 프로그램을 다시 시작하기 위해 사용자 프로그램의 적절한 위치로 이동하는 일 선점(preemptive)와 비선점(nonpreemptive) - cpu스캐쥴링에는 선점방식과 비선점 방식이 존재 - 선점 : 특정 프로세스가 작동중일 때 다른 프로세스가 CPU를 뺏어서 사용할 수 있는 방식 - 비전섬 : 특정 프로세스가 작동중일 때는 다른 프로세스가 CPU를 뺏지 못하고 원래 프로세스가 끝날때 까지 기다리는 방식 CPU스..

CS/운영체제 2023.03.08

싱글스레드, 멀테스레드

스레드란 - 프로세스가 할당받은 자원을 이용하는 실행 단위 싱글스레드, 멀티스레드 - code, data, file(heap)은 공통영역 - registers, stack, program counter은 개별영역 멀티스레드 장점 1. 응답성 : 작업의 일부가 중단되거나 긴 작업이 수행되더라도 프로그램의 수행이 계속됨 2. 자원공유성 : 자신이 속한 프로세스 내의 스레드들과 메모리와 자원을 공유 3. 경제성 : 프로세스를 새로 생성하는 비용보다 스레드를 새로 생성하는게 훨씬 경제적임. 4. 확장성 :멀티스레드의 경우 한 프로세스를 여러 프로세서에서 수행할 수 있음

CS/운영체제 2023.02.27

봉쇄형(blocking), 비봉쇄형(nonblocking), 동기식(synchronous), 비동기식(asynchronous),

봉쇄형, 비봉쇄형, 동기식, 비동기식* 봉쇄형(blocking) : 매인 프로세스가 다른 프로세스가 동작하는 동안 멈춤 * 비봉쇄형(non-blocking) : 메인프로세스가 다른 프로세스가 일하는 동안에도 멈추지 않음 * 동기식(synchronous) : 작업의 순서를 보장함. 작업의 순서를 보장해야하기 때문에 메인프로세스가 다른 프로세스의 작업완료를 지속적으로 확인함(관심을 가짐). * 비동기식(asynchronous) : 작업의 순서를 보장하지않음. 작업의 순서를 보장하지 않기때문에 메인프로세스가 다른 작업을 수행하고있고, 다른 프로세스 작업을 신경쓰지않음(비관심)

CS/운영체제 2023.02.17

웹브라우저의 캐시

쿠키 - 만료기한이 있는 key-value 저장소 - 4KB까지 저장가능 - 클라이언트와 서버 모두 만료기한 정할 수 있는데, 보통 서버에서 정함 로컬 스토리지 - 만료기한이 없는 key-value 저장소 - 10MB까지 저장가능 - 클라이엔트에서만 수정 가능 - 웹브라우저를 닫아도 유지되고, 도메인 단위로 유지되고 저장, 생성됨 - HTML5 지원하는 곳에서만 가능 세션 스토리지 - 만료기한이 없는 key-value 저장소 - 5MB까지 저장가능 - 클라이언트에서만 수정 가능 - 탭단위로 스토리지 생성, 탭 닫을 때 해당 데이터 삭제 - HTML5 지원하는 곳에서만 가능 비고 - 데이터베이스의 캐싱기능 - 메인 데이터베이스 위에 레디스(redis)데이터베이스 계층을 '캐싱계층'으로 둬서 성능향상

CS/운영체제 2023.02.04

메모리, 캐시

메모리란? - 데이터의 상태, 명령어를 기록하는 장치 - CPU(일꾼)가 계산을 담당하고, 메모리(작업장)은 기억을 담당 메모리의 계층 - RAM : 하드디스크로 부터 일정량의 데이터를 복사하여 임시저장하고, 이를 필요시마다 CPU에 빠르게 전달하는 역할 - 차수별 저장장치 (1) 1차 저장장치 : 휘발성 저장장치(레지스터, 캐시, 메인메모리) (2) 2차 저장장치 : 보조기억장치 (3) 3차 저장장치 : 백업 사본을 저장하기위해 다른 장치에 저장하는것(cd-rom, blue-ray) 캐시 1. 정의 - 데이터를 미리 복사해놓은 임시저장소. 빠른장치와 느린 장치의 속도차이에 따른 병목현상을 줄이기 위한 메모리 - 레지스터는 CPU와 램사이에 있는 캐시계층이고 램은 캐시메모리와 보조기억장치 사이에 있는 캐..

CS/운영체제 2023.02.04

CPU 구성요소 및 연산과정

CPU란? - CPU는 제어장치, 레지스터, 산술논리연산장치로 구성되어 있는 컴퓨터 장치를 말하며 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석하는 일꾼. * 제어장치(CU: Control Unit) : 프로세스 조작을 지시하는 CPU의 한 부품 * 레지스터 : 레지스터는 CPU내부의 매우 빠른 임시기억장치를 가르킴. CPU와 직접 연결되어 있어 연산속도가 메모리보다 수십~수백배 빠름. CPU는 자체적 데이터 저장방법이 없으므로, 레지스터 거쳐 데이터 전달 * 산술논리연산장치 : 덧셈, 뺄셈 등 두 숫자의 산술연산과 베타적 논리합, 논리곱은 논리연산을 계산하는 디지털 회로 인터럽트 - 컨트롤러가 장치드라이버에게 작업이 완료됐다는 것을 알리고, CPU에게 이를 처리시키기 위해 CPU를 중지 시키는..

CS/운영체제 2023.02.03

시스템콜, modebit

시스템콜 이란 운영체제가 커널에 접근하기 위한 인터페이스이며 유저프로그램이 운영체제의 서비스를 받기위해 커널함수 호출시 사용 => 이 과정을 통해 컴퓨터자원에 대한 직접접근차단, 프로그램을 다른 프로그램으로 부터 보호함 => 응용프로그램과 커널을 이어주는 시스템. 유저모드상의 응용프로그램이 커널함수를 사용하고자 할 때 커널모드로 전환하고 커널함수를 수행한후 다시 유저모드로 전환할 때 사용 MODEBIT 시스템콜이 작동할 때 유저모드와 커널모드로 구분하는 플레그. 카메라, 키보드등 I/O디바이스를 운영체제를 통해서만(커널모드) 사용할 수 있게 하여 해킹으로 부터 사용자 장비를 보호 유저모드 : 유저가 접근할 수 있는 영역에 제한을 주어 컴퓨터자원에 함부러 침범하지 못하게 하는 모드 커널모드 : 컴퓨터의 모..

CS/운영체제 2023.01.28

운영체제의 역할과 구조

동찬찬과 함께하는 신나는 운영체제 스터디를 위한 기초공부 운영체제 박사가 되자운영체제의 역할1. CPU 스케쥴링 : CPU소유권을 어떤 프로세스에 할당할지 2. 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리 3. 프로세스 관리 : 프로세스 생성과 삭제 자원할당 및 반환을 관리 4. I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터간에 데이터를 주고받는 것을 관리 5. 디스크파일 관리 : 디스크파일을 어떠한 방식으로 보관할지 관리 운영체제의 구조- 기본구조유저프로그램 GUI=> 운영체제시스템콜커널드라이버(하드웨어를 제어하기위한 소프트웨어)하드웨어

CS/운영체제 2023.01.28