728x90

Computer Science 25

[운영체제] 가상 메모리

가상 메모리 다중 프로그래밍의 실현에 있어서는 많은 프로세스들을 동시에 메모리에 올릴 수 있어야 한다. 가상 메모리는 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이며, 프로그램이 물리 메모리 보다 커도 된다. 가상 메모리 개발 배경 이전에는 실행되는 코드를 전부 물리 메모리에 올려둬야 했으며, 메모리의 용량 보다 큰 프로그램의 경우엔 실행이 불가능 했음. 여러 프로그램을 동시에 메모리에 올리기 힘든 용량의 한계, 페이지 교체등의 성능 이슈가 발행. 프로그램의 일부만 메모리에 올릴 수 있다면? - 물리 메모리의 크기에 제약 받지 않게 됨 - 더 많은 프로그램들을 동시에 시행할 수 있게 됨. -> 응답시간은 유지되고 CPU 이용률과 처리율은 높아짐. - swap에 필요한 입출력..

[운영체제] 메모리 관리 전략

메모리 관리 전략 메모리 관리의 배경 각 프로세스는 독립된 메모리 공간을 갖고, 운영체제나 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있음. (단, 운영체제만이 운영체제 메모리 영역과 사용자 메모리 영역에 접근에 제약을 받지 않음) Swapping 메모리 관리를 위해 사용되는 기법으로, 라운드 로빈과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU할당 시간이 끝난 프로세스의 메모리를 보조기억 장치로 내보내고 다른 프로세스의 메모리를 불러들일 수 있음. 주기억장치(RAM)으로 불러오는 과정을 swap-in, 보조 기억장치로 내보내는 과정을 swap-out이라고함. 이는 큰 디스크 전송 시간이 요구되기 때문에 현재엔 메모리 공간이 부족할 때 swapping이 시작됨. 단편화 (Fragmenta..

[운영체제] 교착상태 (Deadlock) 및 기아상태(Starvation)

교착상태 (Deadlock) 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태 데드락이 일어나는 경우 P0과 P1이 S와 Q를 모두 얻어야 하는 경우에 P0이 S를 얻고 그 후 context switching이 일어나 P1이 Q를 얻었다. 그리고 다시 context switching이 일어나고 P0은 Q자원을 얻기 위해 기다리게 되고 P1은 S자원을 얻기 위해 기다리게 된다. 즉 서로가 원하는 자원이 상대에게 있어 아무것도 진행되지 못하고 둘 다 기다리고 있는 상황이 되는 것이다. 교착상태의 발생 조건 - 모두 성립해야 발생 - 상호 배제 : 하나의 프로세스가 자원을 사용중일 때 다른 프로세스는 그를 사용할 수 없다. - 점유 대기 : 최..

[운영체제] 프로세스 동기화

Critical Section (임계 영역) 동일한 자원을 동시에 접근하는 작업 (ex 공유하는 병수 사용, 동일 파일을 사용 등)을 실행하는 코드 영역. Critical Section Problem (임계 영역 문제) 프로세스들이 Critical Section을 함께 사용할 수 있는 프로토콜을 설계하는 것. 해결을 위해 필요한 기본 조건 - Mutual Excusion (상호 배제) 프로세스 P1이 critical section에서 실행중이라면 다른 프로세스들은 critical section에서 실행될 수 없다. 즉, 한번에 하나의 프로세스만이 동작할 수 있다. - Progress (진행) critical section에서 실행 중인 프로세스가 없는 경우 어떤 프로세스가 critical section에..

[운영체제] 동기와 비동기

비유를 통한 쉬운 설명 해야할 일(task)가 빨래, 설거지, 청소 세 가지가 있다고 가정한다. 이 일들을 동기적으로 처리한다면 빨래를 하고 설거지를 하고 청소를 한다. 비동기적으로 일을 처리한다면 빨래하는 업체에게 빨래를 시킨다. 설거지 대행 업체에 설거지를 시킨다. 청소 대행 업체에 청소를 시킨다. 셋 중 어떤 것이 먼저 완료될지는 알 수 없다. 일을 모두 마친 업체는 나에게 알려주기로 했으니 나는 다른 작업을 할 수 있다. 이 때는 백그라운드 스레드에서 해당 작업을 처리하는 경우의 비동기를 의미한다. Sync vs Async 일반적으로 동기와 비동기의 차이는 메소드를 실행시킴과 동시에 반환 값이 기대되는 경우를 동기 라고 표현하고 그렇지 않은 경우에 대해서 비동기 라고 표현한다. 동시에라는 말은 실..

[운영체제] CPU 스케줄러

CPU 스케줄러 Ready Queue에 있는 프로세스들을 스케줄링함. CPU를 효율적으로 사용하기 위해서는 프로세스를 잘 배정하는 것이 중요. - 오베헤드를 줄이고, 기아 현상(starvation)을 줄이고, 사용률을 높이는 쪽으로 선점 / 비선점 스케줄링 선점 : OS가 CPU의 사용권을 선점할 수 있는 경우, 강제 회수하는 경우 비선점 : 프로세스 종료나 I/O 등의 이벤트가있을 때 까지 실행 보장 (처리 시간 예측이 어려움) FCFS (First Come First Served) Ready Queue에 먼저 들어온 순서대로 처리하는 방식 (선입선출). 비선점 스케줄링 문제정: convey effect(소요시간이 긴 프로세스가 먼저 도달하여 효율성을 낮추는 현상) SJF (Shortest Job Fi..

[운영체제] 스케줄러

스케줄러 프로세스를 스케줄링하기 위한 Queue에는 3가지가 존재함 1) Job Queue : 현재 시스템 내에 있는 모든 프로세스들의 집합 2) Ready Queue : 현재 메모리 내에 있으면서 CPU를 할당받아 실행되기를 기다리는 프로세스들의 집합 3) Device Queue : Device I/O작업을 대기하고 있는 프로세스의 집합. 각각의 Queue에 프로세스를 넣고 빼는 스케줄러도 3가지가 존재함 장기 스케줄러 / 단기 스케줄러 / 중기 스케줄러 장기 스케줄러 (Long-term scheduler / Job scheduler) 메모리의 크기는 한정되어 있는데 많은 프로세스가 한번에 메모리에 올라오는 경우, 대용량 메모리(일반적으로 디스크)에 임시 저장. 이 pool에 저장된 프로세스 중 어떤 ..

[운영체제] 프로세스와 스레드의 차이

프로세스 프로세스는 실행중인 프로그램으로 운영체제로 부터 주소공간, 파일, 메모리등의 자원을 할당받는 개체. 프로그램은 실행파일이 메모리에 로드될 때 프로세스가 됨. 프로세스는 코드섹션, 데이터 섹션, 스택섹션, 힙섹션, 프로그램 카운터를 포함. 프로세스 제어 블록(PCB) 프로세스마다 하나씩 존재하며 프로세스에 대한 중요한 정보를 저장. (TCB라고 불리기도 함) 운영체제는 프로세스를 관리하기 위해 프로세스 생성시 고유한 PCB를 함께 생성. 프로세스는 CPU 자원을 할당 받아 작업을 처리하다가도 프로세스 전환이 필요하면 진행중이던 작업의 진행상황을 PCB에 저장하고 CPU자원을 반환함. 그 후 다시 CPU를 할당받게 되면 PCB에 저장되었던 내용을 불러와 이전의 작업을 이어서 함. PCB에 저장되는 ..

[데이터베이스] 비 관계형 데이터베이스 (NoSQL)

CAP (Consistency, Availability, Partition Tolerance) 이론 1) 일관성(Consistency) 다중 클라이언트에서 같은 시간에 조회하는 데이터는 항상 동일한 데이터임을 보증하는 것. NoSQL을 사용하는 경우 느슨한 스키마로 인해 일관성이 느슨하게 처리되어 동일한 데이터가 나타나지 않을 수 있음. 느슨하게 처리된다는 것 = 데이터의 변경을 시간의 흐름에 따라 여러 노드에 전파하는 것 NoSQL이 분산 노드 간의 데이터 동기화를 위해 사용하는 방법들 - 동기식 방법: 클라이언트에 응답하기 전 모든 노드에 데이터를 저장. 응답시간 느림 but 데이터의 정합성 보장 - 비동기식 방법: 메모리나 임시파일에 기록하고 클라이언트에 먼저 응답한 다음 특정 이벤트 또는 프로세스..

[데이터베이스] 관계형 DB와 비관계형 DB

관계형 데이터 베이스 - 데이터는 엄격한 데이터 스키마에 따라 데이터베이스 테이블에 저장됨. - 데이터는 관계를 통해서 연결된 여러 테이블에 분산 됨. 엄격한 스키마 데이터는 테이블에 저장되며, 각 테이블은 명확하게 정의된 구조가 있어 그를 준수하지 않는 데이터는 추가될 수 없다. 장점 - 데이터의 무결성 보장 - 데이터의 중복 최소화 - 데이터 베이스 추가 전 유효성 검사를 통해 품질 향상 가능. - VIEW를 통한 보안 설정으로 허가된 사용자들만이 데이터에 접근하게 할 수 있음. 단점 - 관계를 맺고 있어 JOIN문이 많은 복잡한 쿼리문이 생길 수 있음. - JOIN이 많은 복잡한 쿼리문이 생성된 경우 수정이 매우 번거로움. - 수평적 확장이 어렵고 수직적 확장만 주로 가능해 데이터 처리량 성장에 한..

728x90
반응형