Computer Science/Operating System

Computer Science/Operating System

[OS] 프로세스 (Process)

프로세스 (Process) 컴퓨터에서 실행되고 있는 프로그램 HDD/SDD에 있던 프로그램이 인스턴스화되어 메모리(RAM)에 올라가면 프로세스가 된다. 프로세스 상태 (Process State) New(=Create) : 생성 상태 프로세스가 생성된 상태 (이지만 아직 메인 메모리에 올라가지는 않았다.) fork() 또는 exec() 함수를 통해 생성되며, 이때, PCB가 할당된다. fork() : 부모 프로세스의 주소 공간을 그대로 복사하여, 새로운 자식 프로세스를 생성한다. exec() : 새롭게 프로세스를 생성한다. Ready : 대기 상태 메인 메모리 공간에 로드되어 CPU에서 실행을 기다리고 있는 상태 Dispatcher 또는 Short-term scheduler에 의해 CPU로 컨텍스트 스위칭..

Computer Science/Operating System

[OS] Blocking & Non-Blocking I/O

Blocking I/O I/O 작업이 진행되는 동안 유저 프로세스는 자신의 작업을 중단하고 대기하는 방식 유저는 커널에 read 작업 요청 데이터가 입력될 때까지 대기 데이터가 입력되면 유저에게 결과를 전달한 뒤 return 단점 : I/O 작업이 CPU 자원을 거의 쓰지 않으므로 자원 낭비가 심하다. Non-Blocking I/O I/O 작업이 진행되는 동안 유저 프로세스의 작업을 중단시키지 않는 방식 유저가 커널에 read 작업 요청 I/O 작업이 즉시 완료될 수 없다면, 입력 데이터가 없다는 결과 메세지(EWOULDBLOCK)를 반환받고, 프로그램은 다른 작업을 계속 한다. 일정 시간 후에, I/O 작업을 다시 요청하여 데이터가 준비되었는지 확인한다. 데이터가 준비 될 때까지 2-3번을 반복하며, ..

Computer Science/Operating System

[OS] Blocking/Non-blocking & Synchronous/Asynchronous

Blocking/Non-blocking 블럭/논블럭은 호출된 함수가 호출한 함수에게 제어권을 건네주는 유무의 차이이다. Blocking A 함수가 B 함수를 호출할 때, B 함수가 자신의 작업이 종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것 예를 들어, 파일에서 데이터를 읽는 작업이 'Blocking'으로 수행되면, 해당 작업이 완료되어 데이터가 준비될 때까지 프로그램의 실행이 잠시 중지된다. 이는 프로그램이 데이터를 사용할 수 있을 때까지 아무런 작업도 수행하지 못하게 되어, 자원을 비효율적으로 사용할 수 있다는 단점이 있다. Non-blocking A 함수가 B 함수를 호출 할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 할 수 있도록 하는 것 즉, 특정 작업..

Computer Science/Operating System

[OS] 파일 시스템 (File System)

파일 시스템 (File System) 파일이나 자료를 쉽게 발견 할 수 있도록 유지, 관리하는 방법 사용자 영역이 아닌 커널 영역에서 동작 파일을 빠르게 읽기, 쓰기, 삭제 등 기본적인 기능을 원활히 수행하기 위한 목적 파일 시스템 역할 파일 관리 : 파일 저장, 참조, 공유 보조 저장소 관리 : 저장 공간 할당 파일 무결성 메커니즘 : 파일이 의도한 정보만 포함하고 있음을 의미 접근 방법 : 저장된 데이터에 접근할 수 있는 방법 제공 파일 시스템 개발 목적 하드디스크를 효율적으로 이용하고 하드디스크와 메인 메모리의 속도 차이를 줄이기 위해 파일 관리 파일 시스템 구조 블록(Block) 파일 시스템의 최소 저장 단위 각 블록은 고유한 주소 또는 인덱스를 가진다. 파일 데이터와 메타데이터가 포함된다. 파일..

Computer Science/Operating System

[OS] 메모리 (Memory)

메인 메모리 컴퓨터 시스템에서 중앙 처리 장치(CPU)가 직접 접근하여 데이터와 명령어를 저장하고 읽어들이는 주 기억장치이다. 프로세스가 실행되기 위해서는 메인 메모리에 적재되어야 한다. 빠른 접근 속도를 제공하며, 프로그램 실행 속도와 성능에 직접적인 영향을 미친다. 전원이 종료되면 데이터가 지워지는 휘발성 메모리이다. MMU (Memory Management Unit) 주 기억장치인 메인 메모리의 관리를 담당하는 장치 CPU와 메인 메모리 사이에서 동작하며, 주소 변환과 메모리 보호 기능을 수행한다. 주소 변환(Address Translation) 프로세스는 가상 주소(Virtual Address)를 사용하여 메모리에 접근한다. 이때, MMU는 가상 주소를 실제 물리 주소(Physical Addres..

Computer Science/Operating System

[OS] Thrashing

Thrashing 메모리 영역에 접근할 때 페이지 폴트가 지나치게 많이 일어나는 현상 이는 프로세스가 실제 작업보다 페이지 교체 작업에 더 많은 시간을 소비하게 되어 CPU 이용률이 급감하고 성능이 저하되는 결과를 가져온다. Thrashing 발생 이유 다중 프로그래밍 정도가 높아짐에 따라 CPU 이용률이 높아지게 된다. CPU 이용률이 최대값에 도달했을 때, 다중 프로그래밍 정도가 그 이상으로 커지면 쓰레싱이 발생하고, CPU 이용률이 급격히 떨어진다. 운영체제는 CPU 이용률을 감시하며, CPU 이용률이 너무 낮아지면 새로운 프로세스를 추가하여 다중 프로그래밍 정도를 높이게 된다. 이때 전역 페이지 교체 알고리즘을 사용하여 어떤 프로세스의 페이지인지에 대한 고려없이 교체를 수행한다. 그러나, 만약 교..

Computer Science/Operating System

[OS] 페이지 교체 알고리즘

페이지 교체 알고리즘 페이지 교체 알고리즘은 가상 메모리에서 페이지 부재(page fault)가 발생했을 때 어떤 페이지를 메모리에서 제거하고 새로운 페이지를 적재할지를 결정하는 알고리즘이다. 페이지 교체 알고리즘의 목표는 페이지 부재가 최소화되고 시스템의 성능이 최적화되도록 하는 것이다. 페이지 교체 알고리즘 page-out : 메모리에 있는 페이지를 내리는 것 page-in : 새로운 페이지를 올리는 것 victim page(희생양 페이지) : 교체되는 페이지 최적(Optimal) 알고리즘 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체한다. 페이지 부재율을 최소화할 수 있지만, 앞으로 어떤 페이지가 사용될 지 미리 예측할 수 없기 때문에 실제로 구현하기 어렵다. FIFO(First-In, Firs..

Computer Science/Operating System

[OS] 페이징 (Paging) & 세그멘테이션 (Segmentation)

페이징과 세그멘테이션은 메모리 관리 기법으로, 가상 메모리를 물리 메모리에 매핑하는 방식이다. 이 두 가지 기법은 주소 공간을 분할하고 관리하는 방법에 차이가 있다. 페이징 (Paging) 페이징은 가상 메모리와 물리 메모리를 일정한 크기의 고정된 블록인 페이지(page)로 분할한다. 가상 메모리 주소 공간은 페이지로, 물리 메모리 주소 공간은 프레임(frame)으로 나뉜다. 페이지와 프레임은 동일한 크기로 분할되며, 페이지와 프레임은 일대일로 매핑된다. 페이징 동작 방식 가상 주소를 페이지 번호와 오프셋(offset)으로 분할한다. 페이지 테이블(page table)이라는 데이터 구조를 사용하여 가상 페이지와 물리 프레임 간의 매핑 정보를 유지한다. 페이지 테이블에는 페이지 번호와 해당 페이지에 대응되..

Computer Science/Operating System

[OS] 세마포어 (Semaphore) & 뮤텍스 (Mutex)

세마포어 (Semaphore) 상호 배제(mutual exclusion)를 위한 동기화 기법 중 하나로, 공유 자원에 대한 접근을 제어하는 데 사용된다. 세마포어는 동시에 여러 개의 스레드나 프로세스가 접근할 수 있는 임계 영역(critical section)의 동시 접근을 제어하고 조절하는 역할을 한다. Java에서는 'java.util.concurrent.Semaphore' 클래스를 사용하여 세마포어를 구현할 수 있다. 세마포어의 연산 세마포어는 일반적으로 정수형 변수로 표현되며, 세마포어 값은 0이상의 값을 가진다. 1. P (Proberen 또는 Wait Operation) 세마포어 값을 1감소시키고, 만약 값이 음수가 되면 해당 스레드나 프로세스를 대기 상태로 전환한다. 이 연산은 세마포어에 대..

Computer Science/Operating System

[OS] 경쟁 상태 (Race Condition)

경쟁 상태 (Race Condition) 여러 개의 프로세스 또는 스레드가 공유된 자원/데이터에 접근하고 조작할 때, 실행 순서나 타이밍 등에 따라 예상치 못한 결과가 발생하는 상황 경쟁 상태가 발생하는 경우 동시성 접근 : 여러 프로세스나 스레드가 공유 변수에 동시에 접근하는 경우 두 개의 스레드가 동시에 공유 변수를 증가시키는 연산을 수행한다면, 스레드 간에 연산의 순서가 불확실해지고 일관성 없는 결과가 발생할 수 있다. 상호 배제(Mutual Exclusion)를 통해 해결 : 공유 변수에 대한 접근을 동시에 하지 못하도록 잠그는 메커니즘이다. 예를 들어, 임계 영역(Critical Section)을 설정하여 한 번에 하나의 프로세스/스레드만 접근 할 수 있도록 한다. 커널 작업을 수행하는 도중에 ..

dbssk
'Computer Science/Operating System' 카테고리의 글 목록