본문 바로가기

공부/OS 공부10

[OS공부] 뮤텍스/세마포어/크리티컬섹션 개념 세 기법은 운영체제가 지원하는 동기화 객체의 종류이다. OS에 쓰레드 동기화가 왜 필요할까? 컴퓨터에서의 자원은 제한되는 특성을 갖지만 시스템은 여러 프로세스를 동시에 실행하면서 각각 프로세스들은 자원들을 차지,점유하려는 시도를 한다. 이를 관리할 시스템이 없다면 프로세스간 충돌이 빈번할 것이다. 이 포스팅의 내용은 이런 문제를 해결하기 위해 운영체제에 도입된 객체를 활용하는 방법이다. 운영체제가 제공하는 동기화용 커널객체에는 뮤텍스,세마포어,이벤트 등이 있으며, 사용자모드 동기화 객체로 크리티컬 섹션이 존재한다. 뮤텍스(Mutex) 기반의 동기화 (메모리 접근 동기화) 세마포어(Semaphore) 기반의 동기화 (메모리 접근 동기화) 크리티컬 섹션(Critical section) 기반의 동기화 1. 뮤.. 2022. 11. 17.
[OS 공부] 캐시의 지역성 우선 간단히 캐시메모리란 : CPU (속도빠름) 와 MM (속도느림) 간 속도차이에 따른 병목형상을 줄이기 위한 범용메모리이다. 입출력 데이터를 버퍼링해서 MM에의 접근 없이 빠른 입출력을 제공한다. 캐시의 지역성이란 : 캐시가 효율적으로 동작하려면, 캐시에 저장할 데이터가 지역성을 가져야 한다. 지역성이란 데이터 접근이 시간적 혹은 공간적으로 가깝게 일어나는 것을 말한다. 지역성의 원리 : 캐시메모리는 병목현상을 줄이기 위한 범용메모리이고 이런 역할을 수행하기 위해서는 CPU가 원하는 데이터를 어느정도 예측할 수 있어야 한다. 왜냐하면 캐시의 성능을 좌우하는 것은 작은 용량의 캐시 메모리에 CPU가 사용할 의미있는 정보가 얼마나 들어있는가 이기 때문이다. 이때 Hit rate를 극대화 시키기 위해 지역.. 2021. 3. 9.
[OS 공부] 가상 메모리 가상메모리란 : 'Virtual Memory' 프로세스 전체가 메모리에 올라가 있지 않아도 실행이 가능하게 하는 기법. 즉 필요한것만 올린다. - 다중 프로그래밍을 위해서는 多중 즉 여러 프로세스들을 동시에 메모리에 올려두어야 한다. 이에는 많은 메모리가 필요하나 가상 메모리를 이용하면 프로그램이 물리 메모리보다 커도 실행된다는 장점이 있다. 개발 배경 : 1. 프로세스가 실행되려면 코드의 전부가 물리 메모리에 올려야 했고, 이 때 메모리 용량보다 큰 프로그램은 실행할 수 없었다. 2. 여러 프로그램을 동시에 올리려면 용량의 한계, 페이지 교체 등의 성능이슈 발생 3. 불필요한 프로그램이 메모리에 올라와 있을 수 있다. (가끔만 사용되는 코드) 하는 일 : 1. 가상 주소 공간을 사용자에게 제공 - 가상.. 2021. 2. 12.
[OS 공부] 메모리 관리 전략 OS가 메모리를 관리하는 이유 ? - 각 프로세스들은 독립된 메모리공간을 갖고 OS 또는 다른 프로세스의 메모리 공간 접근에 제한이 걸려있다. - OS 만이 OS 영역과 다른 프로세스의 메모리 영역의 접근에 제한이 없다. 용어 : - Swapping : 메모리 관리에 사용되는 기법. 다중 프로그래밍 환경에서 CPU의 할당시간이 끝난 Process의 메모리를 보조기억장치로 내보내고 다른 Process의 메모리를 불러들일 수 있다. - Fragmentation : '단편화'로 프로세스들이 메모리에 적재되고 나가는 과정이 계속되다보면 점령하지 못하는 자유공간들이 늘어나게 되는 현상. 이 공간들을 압축하여 자유공간을 확보할 수 있지만 작업효율이 좋지는 않다. Paging : 메모리 관리기법중 하나이다. 외부 단.. 2021. 2. 6.
[OS 공부] 프로세스 동기화 프로세스 동기화란 : 여러 프로세스가 공유하는 자원의 일관성을 유지하는 것 여러 프로세스가 동시에 한 자원에 접근하려 할때 이 프로세스들의 순서를 정의해주어 일관성을 유지해야 한다. 용어 : Critical Section : 동일한 자원에 동시에 접근하는 작업을 실행하는 코드 영역 Critical Section Problem : 프로세스들이 Critical Section 을 같이 사용할 수 있는 프로토콜을 설계하는 것 해결을 위해 필요한 조건들 - Mutual Exclusion (상호 배제) 1번 프로세스가 Critical Section에서 실행중이라면 다른 프로세스들은 Critical Section에서 실행될 수 없다. - Progress (진행) Critical Section 에서 실행중인 프로세스가.. 2021. 1. 27.
[OS 공부] 동기&비동기 데이터 처리모델인 동기와 비동기 이다. 동기 : Synchronous 비동기 : Asynchronous 동기방식이란 : - 작업을 실행했을 때 그 작업이 끝났다는 반환값을 받은 후에야 다음 작업을 실행하는 방식 - 끝났다는 반환값이 오지 않는다면 계속 기다린다. 장점 : 설계가 간단하고 직관적이다. 단점 : 결과가 반환되기 전까지 계속 대기해야 된다. 비동기방식이란 : - 두 작업이 동시에 들어왔을 경우 작업을 실행하고 요청이 반환되는동안 다른 작업 수행 가능 - 꼭 한가지의 작업이 끝나지 않아도 다른 작업을 실행할 수 있다 장점 : 결과 반환동안 다른작업을 수행할 수 있어 효율적 단점 : 설계가 복잡하고 논증적이다. 2021. 1. 17.
[OS 공부] CPU 스케줄러 CPU 스케줄러란 다중 프로그램 OS의 기본으로 여러 프로세스들이 CPU를 교환하며 사용하기 위해 필요한 스케줄러이다. 스케줄링 대상은 Ready Queue에 있는 프로세스들이다. 이에 대한 이해는 이전 포스팅을 참고 dbstndi6316.tistory.com/176?category=957343 [OS 공부] 스케줄러 스케줄러란 프로세스들은 자신이 죽을때까지 수많은 큐들을 돌아다닌다. OS는 이 큐 안에 있는 프로세스 중에 하나를 선택해야 한다. 이런일을 스케줄러가 하는 것이다. 즉,프로세스들 중에 무 dbstndi6316.tistory.com 스케줄링이 일어나는 시점 - Running -> Waiting (I/O, 자식프로세스종료) - Running -> Terminate (부모프로세스 종료) - Ru.. 2021. 1. 13.
[OS 공부] 스케줄러 스케줄러란 프로세스들은 자신이 죽을때까지 수많은 큐들을 돌아다닌다. OS는 이 큐 안에 있는 프로세스 중에 하나를 선택해야 한다. 이런일을 스케줄러가 하는 것이다. 즉,프로세스들 중에 무엇을 어떻게 어떤시간에 선택해야하는것일까? 이러한 원칙을 세워 실행하는 것을 스케줄러라고 한다. 큐(Queue) : 프로세스를 스케줄링 하기 위한 큐는 세가지 종류가 있다. - Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 - Ready Queue : 현재 메모리 내에 있으면서 CPU를 기다리는 프로세스의 집합 - Device Queue : Device I/O 작업을 대기하고있는 프로세스의 집합 스케줄러의 종류 장기스케줄러 : 한정된 메모리 공간에 프로세스들이 한번에 올라온 경우, 디스크에 임시로 저장.. 2021. 1. 10.
반응형