메모리 할당 - 연속할당(고정분할, 가변분할)과 불연속할당(페이징, 세그멘테이션, 페이지드세그멘테이션), 단편화
·
Computer Science/Operating System
단편화내부단편화외부단편화메모리 블록 안에 사용되지 않는 공간이 발생하는 현상.메모리 블록 밖에 사용 가능한 메모리 공간이 여러 조각으로 나뉘어, 필요한 만큼의 큰 연속된 메모리 블록을 확보하지 못하는 현상.      프로그램에 필요한 메모리를 할당할 때 시작 메모리 위치, 메모리 할당 크기를 기반으로 할당하며, 연속할당과 불연속 할당으로 나뉜다.  연속할당 (contiguous memory allocation)하나의 연속된 메모리 블록에 프로세스를 할당하는 방식. 물리적으로 연속된 공간을 사용하는 메모리 관리 기법이다. 고정 분할 (Fixed Partitioning)메모리를 일정한 크기로 분할하여 프로세스를 할당하는 방식. 즉, 시스템이 시작될 때 고정된 크기의 파티션으로 나누고 이 크기가 변하지 않는다..
캐시 종류와 캐시 매핑( 직접매핑, 연관매핑, 집합-연관 매핑)
·
Computer Science/Operating System
캐시(cache)란?캐시는 컴퓨팅에서 자주 사용되는 데이터나 연산 결과를 임시로 저장하는 고속 메모리이다.메인 메모리보다 빠른 속도로 데이터에 접근할 수 있도록 설계되어 있어, 시스템 성능을 크게 향상시킬 수 있다.특히 CPU와 메모리 간의 병목 현상을 줄이는 데 중요한 역할을 한다.  캐시 히트(Cache Hit)요청한 데이터가 캐시에 존재하는 경우를 뜻함. 캐시 히트가 발생하면 데이터 접근시간이 매우 짧아짐.캐시 미스(Cache Miss)요청한 데이터가 캐시에 없는 경우를 뜻함. 캐시 미스가 발생하면 메인메모리에서 데이터를 가져와야함. 접근시간 길어짐.캐시 일관성(Cache Coherency)여러 캐시가 동일한 메모리 영역을 공유할 때 데이터 일관성을 유지하는 메커니즘. 특히 멀티프로세서 시스템에서 ..
교착 상태(deadlock)와 은행원 알고리즘
·
Computer Science/Operating System
교착 상태란?두 개 이상의 프로세스나 스레드가 서로 상대방의 작업이 끝나기를 무한정 기다리며, 결국 아무것도 완료되지 않는 상태.   교착 상태의 원인 (조건)상호배제(Mutual Exclusion):  자원은 한번에 하나의 프로세스만 사용 가능점유대기(Hold and Wait): 최소 하나의 자원을 점유하고 있으며, 추가 자원을 요청하여 대기중인 프로세스가 존재비선점(Non-preemptive): 자원을 강제로 뺏을 수 없음환형 대기(Circular Wait): 대기하고 있는 프로세스들 간의 순환적인 고리가 형성됨.4가지 조건이 모두 충족되어도 교착상태는 발생하지 않을 수 있다. 그러나 4가지 조건이 모두 충족되어야 “교착상태가 일어날 수” 있다.     교착 상태 해결 방법 교착상태 예방(Preven..
경쟁상태 해결하기 - 뮤텍스, 세마포어, 모니터
·
Computer Science/Operating System
경쟁상태 해결 조건여러 프로세스나 스레드가 공유 자원에 접근할 때 데이터의 일관성과 무결성을 보장하기 위해 아래와 같은 조건을 만족해야한다. 상호배제 (Mutual Exclusion)임계영역에 한번에 하나의 프로세스나 스레드만 접근할 수 있도록 해야함.즉, 어떤 프로세스가 임계영역에 있을 때 다른 프로세스는 그 임계영역에 들어갈 수 없음. 진행의 융통성(Progress)임계영역에 들어가려는 프로세스가 없으면, 임계영역에 들어갈 수 있는 프로세스가 이를 결정할 수 있어야 함.즉, 임계영역에 들어갈 수 있는 프로세스를 선택하는 과정이 지연되지 않고 진행되어야 함.결정은 임계영역에 있지 않은 프로세스만 참여할 수 있음. 한정 대기 (Bounded Wating)특정 프로세스가 임계영역에 들어가는 것이 무한정 지..
공유자원과 경쟁 상태, 임계영역
·
Computer Science/Operating System
공유 자원 (Shared Resource)공유자원이란 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 자원을 말한다. 공유 자원의 특징다중접근여러 프로세스나 스레드가 동시에 접근할 수 있기 때문에 관리가 필요.데이터 일관성올바르게 관리되지 않으면 데이터 일관성이 깨질 수 있음동기화 필요여러 접근을 조율하기 위한 동기화 매커니즘 필요공유 자원의 예시여러 스레드가 동시에 접근하는 전역변수여러 프로세스가 동시에 접근하는 파일메모리, 파일, 데이터베이스...  경쟁 상태 (Race Condition)두개 이상의 프로세스나 스레드가 공유 자원에 동시에 접근할 때 발생하는 문제.동시에 접근을 시도할 때 타이밍이 예상되는 결과 값에 영향을 줄 수 있는 상태. 이를 잘 해결하지 못하면 데이터 정합성, 데이터..
멀티태스킹(Multitasking)과 CPU 스케줄링(선점형, 비선점형, 라운드로빈, 우선순위 기반 스케줄링, FIFO, SFJ ...)
·
Computer Science/Operating System
멀티태스킹(Multitasking)이란?여러 프로세스 내에서 여러 작업을 동시에 수행하는 것을 의미한다. 정확히는, 멀티태스킹은 CPU의 스케줄링을 통해 "동시에 수행하는 것처럼 보이는 것"이다.멀티프로세싱은 실제로 CPU병렬 처리를 통해 동시에 작동하는 것으로 차이가 있다.   멀티태스킹 스케줄링 방식멀티프로그래밍 : 여러 프로그램이 메모리에 동시에 적재되어 CPU가 필요할 때마다 프로그램을 실행시분할 : 여러 프로세스가 동시에 실행되는 것처럼 보이도록 각 프로세스에 시간 할당량을 주고 CPU를 빠르게 전환해주는 방식실시간 시스템 : 시스템의 응답시간이 중요한 환경에서 특정 작업을 정해진 시간안에 완료해야 하는 방식  스케줄링 알고리즘비선점형 스케줄링 (Non-preemptive Scheduling)프..
프로세스의 상태
·
Computer Science/Operating System
Create , NewUser의 Job/command 요청이 커널에 등록되는 상태.커널이 등록되면서 프로세스가 생성됨.커널 안에 프로세스를 위한 PCB가 생기고 초기값이 PCB에 저장.PCB(Process Control Block) 알아보기프로세스는 생성 되었으나, 아직 준비 큐에 들어가지 않은 상태이다.이때 커널은 메모리 공간이 있는지 확인한다.fork()나 exec() 함수를 통해 프로세스가 생성된 상태이다.fork() : 부모 프로세스의 주소 공간을 그대로 복사하며, 새로운 자식 프로세스를 생성. 주소 공간만 복사할 뿐, 프로세스의 비동기 작업 등은 상속하지 않음.exec() : 새롭게 프로세스를 생성  Ready프로세스가 생성되고 커널이 "메모리 할당"을 인지하고 (implicit 하게 자원 요청..
IPC(Inter-Process Communication)
·
Computer Science/Operating System
IPC(Inter-Process Communication)란?프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 방법.ex) 브라우저를 띄워 네이버 서버와 HTTP 통신해서 html 등의 파일을 가져오는 것 IPC의 종류공유메모리파일소켓파이프메세지 큐위 다섯가지 IPC 종류를 하나씩 살펴보자  공유메모리 (Shared Memory)여러 프로세스가 메모리를 공유하여 서로 통신할 수 있도록 하는 것.어떠한 매개체를 통해 데이터를 주고 받는게 아니라 메모리 자체를 공유.때문에 불필요한 데이터 복사의 오버헤드가 발생하지 않음.고속 데이터 전송 : 메모리에 직접 접근하므로 속도가 가장 빠른 방법같은 메모리 영역을 여러 프로세스가 공유하기 때문에 동기화 필요  파일(File)디스크에 저장된 데이터를 기반으로 통신..
멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading)
·
Computer Science/Operating System
멀티프로세싱 (Mutiprocessing)멀티프로세싱이란? 여러 CPU를 사용하여 동시에 여러 프로세스를 실행하는 컴퓨팅기술. 각 프로세스는 독립된 메모리 공간을 갖고 있어 서로의 메모리에 직접 접근하지 않는다.⭐️ 프로세스 간 통신 (IPC) : 프로세스 간 데이터를 주고받기 위해 파이프, 메시지 큐, 공유메모리 등의 IPC 메커니즘을 사용. IPC(Inter-Process Communication) 설명 바로가기 멀티프로세싱의 장점과 단점장점여러 프로세스를 병렬로 실행함으로써 작업 처리 속도가 빨라짐 (성능 향상)하나의 프로세스가 실패해도 다른 프로세스에는 영향을 미치지 않음 (안정성)추가적인 CPU나 코어를 통해 쉽게 시스템 성능 확장이 가능함 (확장성)단점다중 CPU/코어 시스템은 단일 CPU 시..