목록프로그래밍👩🏻💻/운영체제 (7)
suyeonme
VM(Virtual Machine) VM은 하이퍼바이저(hypervisor)로 컴퓨터 환경을 가상화(emulation)하는 방법이다. 하이퍼바이저를 이용하여 HostOS위에 특정 운영체제(가상 이미지)로 GuestOS를 올려 여러개의 VM을 생성할 수 있다. 하드웨어 스택을 가상화한다. 예를 들면, HostOS가 window이고 그 위에 GuestOS로 Linux를 설치할 수 있다. GuestOS 입장에서는 물리 서버와 동일하게 사용이 가능하다. 하이퍼바이저의 종류로 virtual box, Xen, KVM, VMware등이 있다. 장점 각각의 VM간 완전한 격리로 보안성이 높다. GuestOS로 다양한 OS를 사용할 수 있다. 단점 크기가 GB단위로 사이즈가 크다. 각각의 OS를 띄워야하므로 시작 및 종..
CPU 스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 한다. 스케줄링의 단계 CPU 스케줄링은 규모에 따라 고수준 스케줄링, 중간 수준 스케줄링, 저수준 스케줄링으로 구분된다. 고수준 스케일링 전체 시스템의 부하를 고려하여 프로세스를 활성화할지 말지를 결정하여 전체 프로세스의 수를 조절한다. 시스템의 전체 프로세스수가 결정되는데 이를 멀티프로그래밍 정도(Degree of multiprogramming)이라고 한다. 작업 요청이 오면 승인할지 거부할지를 결정하므로 승인 스케줄링(Admission scheduling)이라고도 한다. 저수준 스케일링 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 결정한다. 프로세스 상태에 관한 내용은 대부분 저수준 스케..
스레드(Thread)란? 스레드는 프로세스의 코드에 정의된 절차에 따라 CPU에 작업을 요청하는 실행단위이다. 프로세스의 작업 과정 운영체제는 코드와 데이터를 메모리에 가져온다. 프로세스 제어블록을 생성한다. 작업에 필요한 메모리 영역을 확보한다. 준비된 프로세스를 준비큐에 삽입한다. 프로세스가 생성되면 CPU스케줄러는 프로세스가 해야할 일을 CPU에 전달하고 CPU가 작업을 수행한다. CPU 스케줄러가 CPU에 전달하는 일 하나가 스레드이다. CPU가 처리하는 작업의 단위는 프로세스로부터 전달받은 스레드이다. 운영체제 입장에서 작업단위는 프로세스이고 CPU 입장에서 작업단위는 스레드이다. 스레드 관련 용어 멀티스레드 프로세스 내 작업을 여러개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영기..
프로세스(Process)란? 프로그램이 실행되면 프로세스가 된다. 프로세스는 컴퓨터 시스템의 작업 단위로 태스크(task)라고도 부른다. 프로그램: 저장장치에 저장되어있는정적인 상태 프로세스: 실행을 위해 메모리에 올라온 동적인 상태 즉, 프로그램을 더블 클릭하여 실행하면, 운영체제는 프로그램을 메모리의 적당한 위치로 가져와서 프로세스 제어 블록을 생성한다. 시분할 방식 CPU가 1개인 컴퓨터에서 여러개의 프로세스를 동시에 실행한다. CPU가 시간을 쪼개어 여러 프로세스에 적당히 배분하기때문에 사용자는 여러개의 프로세스가 동시에 실행하는 것처럼 느낄 수 있다. 프로세스 제어 블록(Process Control Block) 하나의 프로세스를 실행하려면 프로세스 구분자, 메모리 관련 정보, 프로그램 카운터와 ..
CPU와 메모리, 주변 장치의 작업속도가 다르다. CPU는 CPU 내부버스로 연결되어있고 메모리, 주변 장치는 시스템 버스로 연결되어있다. 따라서 CPU에 비해 메모리가 느린 것은 물론이고 프로그램과 데이터를 보관하는 하드디스크의 속도는 더욱 느리다. 버퍼(Buffer) 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 한다. 느린 입출력장치에서 데이터를 읽을 때마다 하나씩 전송하면 작업량에 비해 실제로 전송되는 데이터의 양이 매우 작다. 버퍼를 사용하여 일정량의 데이터를 모아 한꺼번에 전송하면 적은 노력으로 많은 양의 데이터를 옮길 수 있다. 예시: 계란을 하나씩 옮기는 것보다 바구니에 여러개 담아 옮기는 것이 더 빠르다. 버퍼의 종류 하드디스크의 메모리 버퍼 동영상 스트리밍 (네트워크에..
운영 체제의 구조 운영체제는 크게 커널(Kernel)과 인터페이스(Interface)로 나뉜다. 커널(Kernal) 운영체제의 핵심 기능을 모아놓은 것으로 운영체제의 성능은 커널이 좌우한다. (프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리, 프로세스간 통신 관리등) 자동차에 비유하면 엔진에 해당한다. 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작할 수 있다.(e.g. 유닉스, 매킨토시) 시스템 호출을 제어한다. 커널은 사용자나 응용프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근을 차단한다. 따라서 자원을 이용하기 위해서는 시스템 호출이라는 인터페이스를 사용해야한다. (e.g. C언어의 printf()함수) 드라이버를 사용하여 다양한 종류의 하드웨어를 커널에 연..
운영 체제의 역사 흐름 1940년 최초의 컴퓨터 에니악 등장(미사일 탄도를 계산하기 위해서 제작) 18000개의 진공관을 전선으로 연결하여 논리회로를 구성했다.(hard writing) 다른 작업을 하기 위해서는 전선을 일일히 다시 연결해야했다. 1950년 천공 카드리더 사용 OMR(Optical Mark Reader)의 원조 일괄 처리 시스템(batch processing system) 한번에 한작업만 할 수 있다. 작업에 필요한 프로그램과 데이터를 동시에 입력해야한다. 모든 작업을 한꺼번에 처리해야하고 프로그램 실행 중간에 사용자가 데이터를 입력하거나 수정할 수 없다. 단순 계산 위주의 작업만 가능 라인 프린터 사용 1960년 키보드, 모니터 등장 대화형 시스템(Interactive System) 작..