본문 바로가기

CS/운영체제

(5)
가상화란? (VM, 컨테이너, 도커, 쿠버네티스) 애플리케이션의 서비스를 저렴한 비용으로 안정적이고 빠르게 제공하기 위한 인프라이다. 물리적인 컴퓨팅 자원(CPU, Disk, Network 등)을 가상화하여 여러 개의 실행환경(테넌트)이 공유하여 자원을 효율적으로 사용할 수 있게 해주는 것이다. 물리적인 컴퓨팅 자원을 가상화한다는 것은 각 테넌트들이 서로의 존재를 모르도록 격리되어야 함을 의미한다. 1) 호스트 가상화 - Base가 되는 Host OS위에 Guest OS가 구동되는 방식 장점 - 가상의 하드웨어를 에뮬레이팅하기 때문에 호스트 운영체제에 크게 제약사항이 없음 - 논리적으로 분리되어 있어서 한 VM에 오류가 발생해도 다른 VM으로 확산되지 않음 단점 - OS위에 OS가 얹히는 방식이기 때문에 오버헤드가 클 수 있음 종류 : VM Workst..
교착상태(Deadlock) - 다중 프로그래밍 시스템에서 아무리 기다려도 결코 일어나지 않을 사건을 기다리고 있는 하나 또는 그 이상의 프로세스들이 있는 상태 - 자원이 다수의 사용자 프로세스에 의해 공유되고 이들 각 프로세스가 자신에게 할당된 자원에 대해 독점적인 통제권을 가지고 있을 때 발생 - 둘 이상의 서로 다른 프로세스가 자신이 요구한 자원을 할당받아 점유하고 있으면서 상호간에 상대방 프로세스에 할당되어 있는 자원을 요구하는 경우에 발생 - 상호배제, 점유와 대기, 비선점, 환형대기의 조건을 모두 만족했을 경우 교착상태가 발생 4가지 필요조건 상호 배제(Mutual Exclusion) – 한 번에 하나의 프로세스만이 자원을 사용 점유와 대기(Hold and Wait) – 최소한 하나의 자원을 점유하는 프로세스가 존재하면서..
동기화 임계 영역 - 하나의 프로세스가 수정 가능한 공유 자원을 액세스 하고 있을 때, 그 프로세스에 의해 참조되는 프로그램의 부분을 의미한다. - 하나의 프로세스가 공유 데이터를 접근하면, 다른 프로세스는 그 공유 데이터를 접근해서는 안 된다. 즉 여러 프로세스들 중에 하나의 프로세스만이 임계 영역을 사용할 수 있도록 하여 임계 영역에서 공유 변수 값의 무결성을 보장한다. - 임계 영역을 수행 중에 있는 프로세스는 인터럽트, 교착상태, 무한반복이 발생하지 않도록 해야 한다. 코드 지역 - 프로세스가 임계 영역에 진입하려면 진입허가를 요청해야 하는데, 이런 요청을 구현하는 코드 부분을 진입 역역이라고 한다. - 임계 영역을 사용한 이후에는 임계 영역을 빠져나왔음을 알리는 진출 영역이 있다. 나머지 코드 부분은 ..
캐시(Cache) - 프로세서와 메인 메모리 간의 처리 속도 차이를 보완하기 위한 고속 *버퍼이다. (*버퍼 : 데이터를 한곳에서 다른 한 곳으로 전송하는 동안, 일시적으로 그 데이터를 보관하는 메모리 영역) - 메인 메모리에서 데이터를 블록 단위(저속/낮은 대역폭)로 가져와 프로세서에 워드 단위(고속/높은 대역폭)로 전달한다. - 프로세서에서 읽어들인 워드에 참조하려는 정보가 있는 경우를 캐시 적중(cache hit), 없는 경우는 캐시 실패(cache miss)라 한다. 지역성(Principle of locality) 지역성이란 기억장치에 대해 특정 영역에만 참조가 집중적으로 이루어지는 것으로 공간적 지역성과 시간적 지역성 등이 존재한다. 1) 공간지역성(Spatial Locality) - 최근에 참조된 주소의 인접한..
멀티 프로세스 프로그램 - 하드디스크에 저장된 실행 파일 - 실행하지 않는 이상 하드디스크에 계속 남아 있으며, 같은 경로에 같은 이름으로 동시에 존재할 수는 없다. 프로세스 - 실행 중인 프로그램에 대한 인스턴스 - 프로세스는 운영체제로부터 각각 독립된 자원(code, data, stack, heap, PC register 등)을 할당받는다. - 각 프로세스는 최소 1개 이상의 쓰레드를 가지고 있다. - 다른 프로세스의 자원에 접근하려면, 프로세스 간 통신(IPC : 세마포어, 큐, 공유메모리)을 이용해야 한다. - 유닉스 계열에서 ps 명령어로 현재 수행되고 있는 프로세스를 확인할 수 있다. 멀티프로세스 단일 코어 CPU에서 여러 개의 실행 흐름이 동시에 필요하다고 가정하면, 실행 흐름사이에서 데이터를 공유해야 한..