▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

 

CPU 스케줄링은 준비완료 큐로부터 대기 중인 프로세스를 선택해 CPU를 한당하는 작업이다. CPU는 디스패처에 의해 선텍된 프로세스에게 할당된다.

선입 선처리(FCFS) 스케줄링은 가장 단순한 스케줄링 알고리즘이지만, 짧은 프로세스들이 매우 긴 프로세스들이 끝날 때가지 기다리야 하는 경우를 유발시킨다. 최소 자위우선(SJF) 스케줄링은 최적임이 증핑 기능하며, 가장 짧은 대기 시간을 제공한다. S.스케줄링을 구현하는 일은 이러운 데, 이는 다음 CPU 버스트의 길이를 예측하기 이립기 때문이다. SJF 알고리즘은 일반적인 우선순위 스케줄링 알고리즘의 특빌한 경우로 후자는 CPU를 단순히 최고 우선순위의 프로세스에게 할당한다. 우선순위와 SJF 스케줄링은 모두 기아 상태를 겪을 수 있다. 노화(aging)는 기아 상태를 예방하는 기법이다.

9라운드 로빈(RR) 스케줄링은 시분할(대화형) 시스템에 더 적합하다. 라운드 로빈 스케줄링은 준비완료 큐에 있는 첫 번째 프로세스에게 이 시간 단위 동안 CPU를 할당한다. 여기서 q는 시간 할당량이다. Q 시간 단위 이후에, 프로세스가 CPU를 양도하지 않았다면, CPU를 선점하고 프로세스는 준비완료 큐의 꼬리로 이동한다. 주요 문제는 시간 할당량을 선택하는 것이다. 시간 할당량이 너무 크면, 라운드 로빈 스케줄링은 선입 선처리 스케줄링으로 격하되고, 만약 시간 할당량이 너무 적으면, 문맥 교환 시간으로 나타나는 스케줄링 오버헤드가 지나치게 커진다.

선입 선처리 알고리즘은 비선점형이다. 라운드 로빈 알고리즘은 선점형이다. SJF와 우선순위 알고리즘은 선점형일 수도 있고 비선점형일 수도 있다.

다단계 큐 알고리즘들은 다양한 클래스의 프로세스들에 대해 상이한 알고리즘을 사용하도록 허용한다. 가장 보편적인 모델은 라운드 로빈 스케줄링을 사용하는 전위 대화형큐와 선입 선처리 스케줄링을 사용하는 후위 일괄처리 큐이다. 다단계 피드백 큐는 프로세스들을 한 큐에서 다른 큐로 이동하는 것을 허용한다.

현대의 많은 컴퓨터 시스템들은 다중처리기를 지원하고 각 처리기가 독립적으로 자신을 스케줄하게 한다. 통상 각 처리기는 자신의 프로세스 또는 스레드 큐를 유지하고 처리기 모두가 프로세스를 실행시킬 수 있다. 다중처리기와 관련된 추가적인 스케줄 쟁점은 처리기 친화성과 부하 균등, 다중코어 처리 및 가상화 시스템에서의 스케줄링을 포함한다.

스레드를 커널 차원에서 지원하는 운영체제는 프로세스가 아니라 - 스레드를 스케줄링해야 한다. Solaris와 Windows XP가 이에 해당한다. 두 운영체제는 실시간 스레드지원을 포함하여 우선순위에 기반을 둔 선점 방식으로 스레드를 스케줄한다. Linux 프로세스 스케줄러도 우선순위에 기반을 둔 스케줄링을 하며 실시간도 지원한다. 이들 세 운영체제의 스케줄링 알고리즘들은 모두 일괄처리이면서 계산 중심 프로세스보다 대화형 프로세스들을 우대한다.

스케줄링 알고리즘의 다양성 때문에 우리는 알고리즘들을 선택하기 위한 방법을 가질필요가 있다. 분석적 방법은 알고리즘의 성능을 결정하는 데 수학적 분석을 이용한다.모의실험 방법은 대표적인 견본이 되는 프로세스들에 대해 스케줄링 알고리즘을 흉내 내어 얻어지는 성능을 계산하여 결정한다. 그러나 모의실험은 기껏해야 실제 시스템의 근사치만을 알려줄 뿐이다. 스케줄링 알고리즘을 평가하는 유일하게 믿을 수 있는 방법은실제 시스템에 알고리즘을 구현하고 실세계 환경에서의 성능을 감시하는 것이다.

'컴퓨터 구조' 카테고리의 다른 글

교착상태에 대해서..  (0) 2022.04.17
프로세스 동기화에 대해서  (0) 2022.04.16
다중 스레드 프로그래밍  (0) 2022.04.16
프로세스의 일련 과정  (0) 2022.04.16
컴퓨터 시스템 구조에 대해서..  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

스레드는 프로세스 안의 제어 흐름이다. 다중 스레드 프로세스는 같은 주소 공간 안에 여러 개의 서로 다른 제어 흐름을 가지고 있다. 다중 스레딩의 장점은 사용자에 대한 향상된 응답성, 프로세스 안의 자원 공유, 경제성 및 더 효율적인 다중코어의 이용과 같은 규모 가변성 등이다.

사용자 수준 스레드는 프로그래머는 알고 있지만, 커널은 그 존재를 모르는 스레드이다. 커널 수준 스레드는 운영체제 커널에 의해서 지원되며 관리된다. 일반적으로, 커널의 개입을 필요로 하지 않기 때문에 사용자 수준 스레드가 커널 수준 스레드보다 빠르게 생성되고, 빠르게 관리된다. 사용자와 커널 스레드와 관련하여 세 가지의 모델이 있다. 다-대-일 모델은 여러 개의 사용자 스레드를 하나의 커널 스레드로 사상한다. 일-대일 모델은 각 사용자 스레드를 그에 대응하는 커널 스레드로 사상한다. 다-대-다 모델은 많은 사용자 스레드를 그 보다 적은 수 또는 같은 수의 커널 스레드로 멀티플렉스한다.

대부분의 현대 운영체제는 스레드를 위한 커널 지원 기능을 가지고 있다. 이 중 대표적인 시스템에는 Windows 98, NT, 2000, XP와 Solaris, Linux가 있다.

스레드 라이브러리는 응용 프로그래머에게 스레드를 생성하고 관리하기 위한 API를제공한다. 현재 POSIX, Pthreads, Windows 시스템의 Win32 스레드, Java 스레드의3개 스레드 라이브러리가 가장 많이 사용되고 있다.

 

다중 스레드 프로그램은 프로그래머에게 fork () 와 execc() 시스템 호출의 의미 등과 같은 많은 새로운 숙제를 안겨준다. 또 다른 문제들로는 스레드 취소, 신호 처리, 스레드별 데이터 등이 있다.

'컴퓨터 구조' 카테고리의 다른 글

프로세스 동기화에 대해서  (0) 2022.04.16
cpu 스케줄링  (0) 2022.04.16
프로세스의 일련 과정  (0) 2022.04.16
컴퓨터 시스템 구조에 대해서..  (0) 2022.04.16
컴퓨터 운영체제에 대해서..  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

프로세스는 실행 중인 프로그램이다. 프로세스는 실행되면서 상태를 변경한다. 프로세스의 상태는 프로세스의 현재 활동에 의해 정의된다. 각 프로세스의 상태는 새로운(new), 준비완료(ready), 실행(running), 대기(waiting), 그리고 종료(terminated) 상태 중의 하나이다. 각 프로세스는 운영체제 내에서 자신의 프로세스 제어 블록(PCB, Process Control Block)에 의해 표현된다.

 

프로세스가 실행되지 않을 때는 적절한 대기 큐에 놓이게 된다. 운영체제에는 크게 두 가지 부류의 큐가 존재하는데 하나는 입출력 요청 큐이며, 다른 하나는 준비완료 큐이다. 준비완료 큐는 실행할 준비가 완료되어 CPU를 기다리고 있는 모든 프로세스를 가지고 있다. 각 프로세스는 PCB로 대표되며, 이 PCB들은 준비완료 큐를 형성하기 위해서로 링크될 수 있다. 장기(잡) 스케줄링이란 CPU를 차지하기 위해 경쟁할 프로세스를 선택하는 일이다. 통상적으로 장기 스케줄링은 자원 할당 고려사항, 특히 주 메모리 관리에 의해 많은 영향을 받는다. 단기(CPU) 스케줄링은 준비완료 큐로부터 하나의 프로세스를 선택하는 일이다.

 

운영체제는 부모 프로세스가 자식 프로세스를 생성할 수 있는 기법을 제공해야 한다. 부모는 작업을 진행하기 전에 자식 프로세스가 종료되는 것을 기다릴 수 있다. 또한 부모와 자식 프로세스가 동시에 실행될 수도 있다. 병행 실행을 허용하는 이유는 여러 가지가 있는데, 대표적인 이유는 정보 공유, 계산 속도 증가, 모듈성, 그리고 편의성 등이다.

운영체제 내에서 실행되는 프로세스들은 독립적인 프로세스이거나 또는 협력적인 프로세스이다. 협력적인 프로세스들은 서로 통신하기 위한 프로세스 간 통신 기법을 필요로 한다. 통신은 주로 두 가지 방법으로 이루어지는 데 하나는 공유 메모리이며, 다른 하나는 메시지 전달이다. 공유 메모리 기법은 통신 프로세스들이 어떤 변수를 공유할 것을 필요로 한다. 프로세스들은 이러한 공유 변수의 사용을 통해 정보를 교환하도록 기대한다. 공유 메모리 시스템에서는 통신을 제공하기 위한 책임이 응용 프로그래머에게 있다.

 

즉, 운영체제는 단지 공유 메모리만 제공해 줄 필요가 있다. 메시지 전달 기법은로세스가 메시지를 교환하도록 허용한다. 통신을 제공할 책임은 운영체제 자체에 있을수 있다. 이 두 가지 기법은 서로 배타적인 방법은 아니며, 하나의 운영체제 내에서방법이 같이 사용될 수 있다.

클라이언트 서버 시스템에서의 통신은 (1) 소켓 (2) 원격 프로시저 호출(remote procedure call, RPC) 또는 (3) 파이프를 사용한다. 소켓은 통신의 극점으로 정의된 것이다.응용 프로그램 두 개가 통신할 때에는 두 개의 소켓이 만들어지고 통신 채널 양단에나씩 배정된다. RPC는 분산 처리 통신에서 사용되는 또 다른 형태의 통신이다. RPC는한 프로세스(또는 스레드)가 원격지 응용 프로그램의 프로시저를 호출할 때 사용한다.보통의 파이프가 부모와 자식 프로세스 간의 통신을 허용하는 반면에 지명 파이프는 서로 무관한 프로세스 사이의 통신을 허용한다.

'컴퓨터 구조' 카테고리의 다른 글

프로세스 동기화에 대해서  (0) 2022.04.16
cpu 스케줄링  (0) 2022.04.16
다중 스레드 프로그래밍  (0) 2022.04.16
컴퓨터 시스템 구조에 대해서..  (0) 2022.04.16
컴퓨터 운영체제에 대해서..  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

운영체제는 이러 가지 시비스를 제공한다. 최하위 수순에서는 실행 중인 프로그램이 시스템 호출을 통해 운영체제에게 직접 요청하도록 허용한다. 보다 높은 수준에서는, 명령 해석기 또는 셸이 사용자가 프로그램을 작성하지 않고도 요청할 수 있는 기법을 제공한다. 명령은 일괄처리 모드 실행의 경우 파일로부터 올 수도 있고, 대화식 혹은 시분할 모드에서는 터미널로부터 직접 올 수도 있다. 많은 공통적인 사용자의 요구를 만족하기 위해 시스템 프로그램이 제공된다.

요청의 타입은 요청의 수준에 따라 다양하다. 시스템 호출 수준은 프로세스 제어일 및 장치 조작과 같은 기본적인 기능을 반드시 제공해야 한다. 명령 해석기 혹은 시스템 프로그램에 의해 충족되는 보다 높은 수준의 요청들은 일련의 시스템 호출로 변환다. 시스템 서비스는 프로그램 제어, 상태 요청, 입출력 요청과 같은 여러 가지 범주로 분류될 수 있다. 프로그램 오류는 서비스를 위한 묵시적 요청으로 생각할 수 있다.

일단 시스템 서비스가 정의되면, 운영체제의 구조가 개발될 수 있다. 컴퓨터 시스템의 상태와 시스템 작업의 상태를 정의하는 정보를 기록하기 위해 여러 가지 테이블들이 필요하다.

새로운 운영체제의 설계는 힘든 일이다. 설계가 시작되기 전에 시스템의 목표가 잘 정의되는 것이 중요하다. 어떤 시스템 타입을 원하는 지가 여러 가지 알고리즘과 전략들 중에서 필요한 것을 선택하는 기초가 된다.

운영체제는 매우 크기 때문에 모듈화가 중요하다. 일련의 계층으로 시스템을 설계하거나 또는 마이크로커널을 사용하는 것이 좋은 기법으로 간주된다. 가상기계의 개념은 계층적 접근 방식을 취하며, 운영체제의 커널과 하드웨어 모두를 마치 전부 하드웨어 인 것처럼 취급한다. 심지어는 다른 운영체제들조차 이 가상기계 위에 적재될 수 있다. 전체 운영체제 설계 과정을 통해, 우리는 정책 결정을 구현의 상세(기법)와 분리하도록 꼭 주의해야 한다. 후에 정책 결정이 변경되어야 할 때 이러한 분리는 최대의 융통성을 제공한다.

현재 대부분의 운영체제는 시스템 구현 언어 혹은 고급 언어로 작성된다. 이러한 특성은 운영체제의 구현, 유지 관리, 이식성을 향상시킨다. 특정 기계 구성을 위한 운영체제를 만들기 위해 우리는 반드시 시스템 생성을 실행해야 한다. 프로세스와 커널 장애의 디버깅은 디버거와 코어 덤프를 분석하는 다른 도구들을 사용하여 이루어질 수 있다. DTrace와 같은 도구는 병목 지점을 발견하고 다른 시스템 동작을 이해하기 위하여 생산 시스템을 분석한다.

컴퓨터 시스템이 실행을 시작하려면 CPU가 초기화되어야 하고 펌웨어의 부트스트랩 프로그램을 실행시켜야 한다. 부트스트랩은 운영체제가 펌웨어에 저장되어 있는 경우 직접 운영체제를 실행할 수 있거나 운영체제가 메모리에 적재되고 실행될 때까지 펌웨어로부터 더 똑똑한 프로그램을 차례로 적재함으로써 일련의 과정을 마무리 지을 수 있다.

'컴퓨터 구조' 카테고리의 다른 글

프로세스 동기화에 대해서  (0) 2022.04.16
cpu 스케줄링  (0) 2022.04.16
다중 스레드 프로그래밍  (0) 2022.04.16
프로세스의 일련 과정  (0) 2022.04.16
컴퓨터 운영체제에 대해서..  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

▶클릭◀ 암보험,실비보험 가입시 주의사항

 

▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기

 

운영체제는 하드웨어를 관리할 뿐 아니라 응용 프로그램이 실행되기 위한 환경을 제공하는 소프트웨어다. 아마도 운영체제 중에서 가장 가시적인 부분은 인간에게 제공되는 컴퓨터 시스템을 사용하기 위한 인터페이스일 것이다.

 

컴퓨터가 프로그램을 실행하려면 프로그램이 주 메모리에 있어야 한다. 주 메모리는 처리기가 직접 접근할 수 있는 유일한 대량 저장장치이다. 주 메모리는 수백만에서 수십억까지의 크기를 가지는 바이트나 워드의 배열이다. 각 워드는 자신의 주소를 가지고 있다. 주 메모리는 전원이 꺼지거나 중단되면 그 내용을 잃게 되는 휘발성 저장 장치이다. 대부분의 컴퓨터 시스템은 주 메모리의 확장으로서 보조 저장장치를 제공한다. 보는 지장장치는 대용량의 데이터를 영원히 보존할 수 있는 비휘발성 형태의 저장장치이다. 가상 흔한 보조 저장장치는 프로그램과 데이터를 위한 지장 장소를 제공하는 자가디스크이다.

컴퓨터 시스템의 다양한 저장장치들은 속도와 비용에 따라 계층 구조로 구성된다. 상위 계층일수록 비싸지만 속도가 빠르다. 계층 구조 아래쪽으로 내려올수록 일반적으로 비트 당 비용은 감소하고 접근 속도는 증가한다.

컴퓨터 시스템을 설계하는 데에는 다양한 전략들이 있다. 단일처리기 시스템은 하나의 처리기만을 가지는 반면에 다중처리기 시스템은 물리 메모리와 주변장치들을 공유하는 둘 또는 그 이상의 처리기를 가지고 있다. 가장 일반적인 다중처리기의 설계는 대칭형 다중처리기이다. 이 다중처리기는 처리기들이 동등하게 취급되며 다른 처리기와는 독립적으로 실행된다. 클러스터형 시스템은 다중처리기의 특별한 형태이며 LAN으로 연결된 다수의 컴퓨터들로 구성된다.

CPU를 최대한 활용하기 위하여 현대의 운영체제들은 다중 프로그래밍 개념을 도입하였다. 다중 프로그래밍에서는 한 번에 여러 작업들이 메모리에 유지된다. 따라서 CPU는 항상 실행할 작업을 가지게 된다. 시분할 시스템은 다중 프로그래밍의 확장이며 CPU 스케줄링 알고리즘은 작업들을 빠르게 교환해 가며 실행함으로써 마치 각 작업이 동시에 실행되는 것 같은 착각을 유발시킨다.

운영체제는 컴퓨터 시스템의 정확한 동작을 보장해야 한다. 사용자 프로그램이 시스템의 정상적인 동작을 방해하는 것을 막기 위해 하드웨어는 두 가지 모드, 사용자 모드와 커널 모드를 가진다. 여러 가지의 특권 명령(이를테면, 입출력 명령과 중지(halt) 명령)은 커널 모드에서만 실행될 수 있다. 또한, 운영체제가 저장되어 있는 메모리는 사용자에 의한 변경으로부터 보호되어야 한다. 타이머는 무한 루프를 방지한다. 이러한 설비(이중 모드, 특권 명령들, 메모리 보호, 타이머 인터럽트)들이 운영체제가 정확한 동작을 달성하기 위해 사용하는 기본 구조이다.

프로세스(또는 작업)는 운영체제에서 일의 기본적인 단위이다. 프로세스 관리는 프로세스의 생성 및 제거, 서로 간의 통신 및 동기화를 위한 기법의 제공을 포함한다. 운영체제는 어느 프로세스가 메모리의 어느 영역을 사용하고 있는지를 추적하여 메모리를 관리한다. 또한 운영체제는 메모리 공간의 동적 할당 및 반환을 책임진다. 저장 공간 또한 운영체제에 의해 관리되고, 파일과 디렉터리를 표현하기 위한 파일 시스템을 제공하고, 대용량 저장장치의 공간을 관리한다.

그리고 운영체제는 운영체제와 사용자를 보호하고 보안을 유지해야 한다. 보호는 컴퓨터 시스템이 제공하는 자원들에 대한 프로세스와 사용자의 접근을 제어하는 기법을 말한다. 보안 기법은 외부 또는 내부의 공격에 대해 컴퓨터 시스템의 방어를 책임진다. 분산 시스템은 사용자가 컴퓨터 네트워크로 연결된 그리고 지리적으로 떨어져 있는 컴퓨터의 자원에 접근할 수 있게 한다. 이 서비스들은 클라이언트-서버 모델 또는 피어간 모델 형태로 제공된다. 클러스터형 시스템에서는 다수의 컴퓨터들이 공유 저장장치에 존재하는 데이터에 대한 연산을 할 수 있다. 또한 클러스터 구성원의 일부가 고장나더라도 연산은 계속 진행될 수 있다.

LAN과 WAN은 네트워크의 두 기본 형태이다. LAN은 좁은 지역에 존재하는 처리기들끼리의 통신을 가능하게 하고, 반면에 WAN은 넓은 지역에 퍼져 있는 처리기들끼리도 통신할 수 있게 한다. LAN은 일반적으로 WAN보다 빠른 통신을 제공한다.

특정 목적을 가진 컴퓨터 시스템들이 존재한다. 이 시스템에는 소비자 가전 및 자동차, 로봇 등의 내장형 환경을 위해 설계된 실시간 운영체제가 포함된다. 실시간 시스템 운영체제는 명확하게 정의된, 고정된 시간 제약을 가진다. 처리는 반드시 정의된 제한내에 되어야 하며, 그렇지 않으면 시스템은 실패한다. 멀티미디어 시스템은 멀티미디어 데이터의 전달에 관여하며 음성, 영상 또는 두 데이터의 합성 등의 디스플레이나 플레이를 위한 특정 요구 조건을 가지게 된다.

최근, 인터넷과 월드 와이드 웹의 영향으로 웹 브라우저와 네트워킹 및 통신 소프트웨어를 필수 기능으로 포함하는 현대적 운영체제가 개발되고 있다.

 

무료 소프트웨어 운동은 운영체제를 포함한 수천 개의 오픈소스 프로젝트를 창출하였다. 이러한 프로젝트 때문에 학생들은 소스코드를 학습도구로 사용할 수 있다. 학생들은 프로그램을 수정하여 시험하고, 버그를 발견하고 수정하는 데 도움을 주거나 성숙하고 완전한 기능을 갖춘 운영체제, 컴파일러, 툴, 사용자 인터페이스 및 다른 종류의 프로그램을 탐구할 수 있다.

GNU/Linux, BSD UNIX 및 Solaris는 모두 오픈소스 운영체제이다. 무료 소프트웨어와 오픈소스화의 장점은 오픈소스 프로젝트의 개수와 질을 향상시키고, 결과적으로 이 프로젝트를 이용하는 개인 및 회사의 수를 증가시킬 것이다.

'컴퓨터 구조' 카테고리의 다른 글

프로세스 동기화에 대해서  (0) 2022.04.16
cpu 스케줄링  (0) 2022.04.16
다중 스레드 프로그래밍  (0) 2022.04.16
프로세스의 일련 과정  (0) 2022.04.16
컴퓨터 시스템 구조에 대해서..  (0) 2022.04.16
본 광고는 광고심의기준을 준수하였으며, 유효기간은 심의일로부터 1년입니다.

+ Recent posts