운영체제
-
기본 개념운영체제/CPU 스케줄링 2018. 2. 3. 17:51
다중 프로그래밍의 목적은 CPU 이용률을 최대화하기 위해 항상 실행중인 프로세스를 가지게 하는 데 있다.어떤 프로세스가 대기하고 있을 경우 운영체제는 CPU를 그 프로세스로부터 회수해 다른 프로세스에게 할당한다.CPU는 시스템에서 중요한 자원이기 때문에 CPU의 스케줄링은 운영체제 설계의 핵심이 된다. CPU 입출력 버스트 사이클프로세스 실행시 CPU버스트와 입출력 버스트가 번갈아가며 발생한다. CPU스케줄러CPU에 프로세스가 없을 때마다 운영체제는 준비 완료 큐에 있는 프로세스들 중에서 하나를 선택하여 실행한다.선택 절차는 단기 스케줄러에 의해 수행된다. 선점 스케줄링CPU 스케줄링 결정은 다음의 네 가지 상황 하에서 발생한다.1. 한 프로세스가 실행 상태에서 대기 상태로 전환될 때2. 프로세스가 실행..
-
스레드와 관련된 문제들운영체제/스레드 2018. 2. 3. 17:44
fork() exec() 시스템 호출 다중 스레드 프로그램에서는 fork() 와 exec()의 의미가 달라질 수 있다. 만일 한 프로그램의 스레드가 fork()를 호출하면 새로운 프로세스는 모든 스레드를 복제해야 할지 호출한 스레드만 복제할지 모호해진다. 신호 처리 신호는 UNIX에서 프로세스에게 어떤 사건이 일어났음을 알려주기 위해 사용된다. 다중 스레드 프로그램에서는 어느 스레드에게 신호를 전달해야 할 지 선택해야한다. 취소 스레드가 끝나기 전에 그것을 강제 종료 시키는 작업을 일컫는다. 다중 스레드 시스템에서는 스레드 취소시 자원이 동기화 되었는지 확인해야 한다. 스레드 국지 저장소 각 스레드가 자기만 액세스 할 수 있는 데이터를 말한다. 스케줄러 액티베이션 많은 시스템들은 사용자와 커널 스레드 사..
-
암묵적 스레딩운영체제/스레드 2018. 2. 3. 17:41
스레드의 수가 늘어남에 따라 명시적으로 프로그램을 작성하고 검증하는 것이 어려워졌다.이러한 어려움들을 극복하기 위해 스레드의 생성과 관리 책임을 컴파일과 실행 시간 라이브러리에게 넘겨준다.이를 암묵적 스레딩 이라고 한다. 스레드 풀프로세스를 시작할 때 일정한 수의 스레드들을 미리 풀로 만들어 둔다.요청이 들어올 경우 풀에서 한 스레드 에게 작업을 할당한다.요청을 다 서비스 해 주었으면 그 스레드는 다시 풀로 돌아가 다음 작업을 기다린다.풀에 남아있는 스레드가 바닥날 경우 서버는 사용 가능한 스레드가 하나 생길 때까지 기다린다.
-
다중 스레드 모델운영체제/스레드 2018. 2. 3. 17:37
스레드를 위한 지원은 사용자 스레드는 사용자 수준에서, 커널 스레드는 커널 수준에서 제공된다. 사용자 스레드와 커널 스레드의 연관 관계로는 다대일, 일대일, 다대다 모델이 있다. 다대 일 모델 많은 사용자 수준 스레드를 하나의 커널 스레드로 사상한다. 스레드 관리는 스레드 라이브러리에 의해 행해진다. 한 스레드가 봉쇄 시스템 호출을 할 경우 전체 프로세스가 봉쇄된다. 한 번에 하나의 스레드만이 커널에 접근할 수 있기 때문에 다중 처리기에서 병렬로 작동할 수 없다. 일대일 모델 각 사용자 스레드를 각각 하나의 커널 스레드로 사상한다. 하나의 스레드가 봉쇄적 시스템 호출을 하더라도 다른 스레드가 실행 가능하다. 다중 처리기에서 다중 스레드가 병렬로 수행되는 것을 허용한다. 사용자 수준 스레드를 생성할 때 커..
-
다중 코어 프로그래밍운영체제/스레드 2018. 2. 3. 17:33
코어가 여러 개인 시스템을 다중 코어 또는 다중 처리기 시스템이라고 부른다. 암달의 법칙 : 처리 코어의 수가 n개가 된다고 해서 처리 속도가 n배가 되지는 않는다. 병렬 실행 : 동시에 하나 이상의 태스크를 수행 할 수 있는 시스템을 의미한다.병행 실행 : 프로세스들이 빠르게 교체되어 병렬 실행 되는 것처럼 보이게 하는 것 프로그래밍시 극복 과제 태스크 인식 : 독립된 병행 가능한 태스크로 나눌 수 있는 영역 찾기 균형 : 전체 태스크들이 전체 작업에 균등한 기여도를 갖는 것이 중요하다. 데이터 분리 : 데이터도 개별 코어에서 사용될 수 있게 분리한다. 데이터 종속성 : 둘 이상의 태스크가 동시에 접근하는 데이터에 종속성 여부를 검토한다. 시험 및 디버깅 : 병렬로 실행되는 다양한 실행 경로로 인해 프..
-
개요운영체제/스레드 2018. 2. 3. 17:31
스레드 스레드는 CPU 이용의 기본 단위이다. 스레드는 스레드ID, 프로그램 카운터, 레지스터 집합, 스택으로 구성된다. 스레드는 같은 프로세스에 속한 다른 스레드들과 코드, 데이터 섹션, 열린 파일, 신호 와 같은 자원을 공유한다. 최근 프로그램들은 멀티 스레드로 동작한다. 스레드는 프로세스보다 가볍게 생성될 수 있고 스레드를 사용할 경우 코드를 간소화 할 수 있으면서 효율을 증대 시킬 수 있다. 일반적으로 커널은 멀티 스레드로 동작한다. 다중 스레드 프로그래밍의 장점 응답성 : 사용자에 대한 응답성을 증가시킨다. 자원 공유 : 프로세스의 자원과 메모리를 공유한다. 경제성 : 스레드 생성과 문맥 교환 오버헤드가 프로세스보다 적다. 규모 가변성 : 다중 처리기 구조에서 각각의 스레드가 다른 처리기에서 병..
-
클라이언트 서버 환경에서 통신운영체제/프로세스 2018. 2. 3. 16:34
클라이언트 서버에서 사용 가능한 통신 방식은 세 가지가 있다.이 세가지는 소켓, 원격 프로시저 호출, 파이프 이다. 소켓소켓은 각 통신의 극점을 정의한다.각 소켓은 IP주소와 포트 번호 두 가지를 접합해서 구별한다.두 프로세스가 네트워크상에서 통신하기 위해서는 소켓이 두 개 필요하다.프로세스들은 소켓을 통해서 네트워크로 메시지를 송수신한다. 소켓의 단점소켓은 스레드들 간에 구조화 되지 않은 바이트 스트림만을 통신하도록 한다.원시적인 바이트 스트림 데이터를 구조화하고 해석하는 것은 클라이언트와 서버의 책임이 된다. 원격 프로시저 호출RPC는 네트워크에 연결되어 있는 두 시스템 사이의 통신을 위해 프로시저 호출을 추상화 하기 위한 방편으로 설계되었다.RCP는 클라이언트가 원격 호스트의 프로시저를 마치 자신의..
-
프로세스간 통신운영체제/프로세스 2018. 2. 3. 16:27
운영체제 내에서 실행되는 병행 프로세스들은 독립적이거나 협력적인 프로세스들일 수 있다.프로세스가 다른 프로세스들에게 영향을 주거나 받지 않는다면 독립적인 프로세스라고 말하고프로세스가 다른 프로세스들에게 영향을 주거나 받는다면 협력적인 프로세스라고 말한다. 프로세스 협력을 허용하는 환경을 제공하는 이유정보공유 , 계산 가속화, 모듈성, 편의성 협력적 프로세스들은 데이터와 정보를 교환할 수 있는 프로세스간 통신 기법을 필요로 한다.프로세스간 통신 모델에는 공유 메모리 방식과 메세지 전달 방식이 있다. 공유 메모리 시스템공유 메모리 방식을 사용할 때 운영체제는 프로세스들이 동시에 동일한 위치에 쓰지 않도록 책임져야한다. 생산자 - 소비자 문제생산자 프로세스는 정보를 생산하고 소비자 프로세스는 정보를 소비한다...