프로세스 (Process) 1) 프로세스의개념 프로세서에의해처리되어지는사용자프로그램및시스템프로그램을의미한다. 현재실행중인프로그램이며 Job(=Task) 이라고도한다. PCB를가지는프로그램으로비동기적인행위를일으키는주체이며실제주기억장치에저장된프로그램이다. 운영체제가관리하는실행단위이며프로시저 ( 프로그램내의하위프로그램 ) 가활동중인것을의미한다. 2) 프로세스의상태전이과정 Dispatch: CPU 를할당받아실행상태로전이되는과정 Submit( 제출 ) Hold( 접수 ) Ready( 준비 ) Run( 실행 ) 선점 ( 시간초과 ) 입출력종료 (wake up) Complete( 완료 ) 디스크 (Spooling) Wait, Block ( 대기 ) 입출력발생 제출상태접수상태준비상태실행상태대기상태완료상태 작업처리를위해사용자가작업을시스템 ( 운영체제 ) 에제출한상태 제출된작업이디스크의스풀공간위치에저장된상태 프로세스가프로세서를할당받기위해대기중인상태로준비상태큐에서실행을준비한다. 접수상태 -> 준비상태의변화는운영체제의 Job 스케줄러에의해처리된다. 준비상태큐에있는프로세스가프로세서를할당받아서실행되는상태로프로세스에게주어진할당시간이종료되면준비상태로넘어간다. 실행중에입출력처리가요구되면현재프로세스는잠시중단되고, 대기상태로넘어간다. 준비상태 -> 실행상태의변화는 CPU의스케줄러에의해처리된다. 프로세스의입출력처리가완료될때까지대기하는상태 프로세서를할당받아주어진시간내에작업수행을완료한상태 3)PCB(Process Control Block) 의개념 운영체제가프로세스각각의정보를저장해놓는곳으로각각의프로세스가생성될때마다고유의 PCB 가생성되고, 완 료되면 PCB 의정보는지워진다. 1PCB에저장된정보 프로세스의현재상태 : 준비, 대기, 실행 프로세스고유식별자 : 각각의프로세스를구분하는고유번호 프로세스우선순위및스케줄링 : 프로세스의실행우선순위및스케줄링정보 CPU의레지스터정보 : AC, Index Register, PC, 범용레지스터등에대한정보 주기억장치정보 : Base Register, Page table 입출력상태정보 : 입출력장치의파일목록 계정정보 : CPU 사용시간, 실사용시간, 한정시간등 포인터 : 부모프로세스, 자식프로세스, 프로세스가위치한메모리포인터, 할당된자원의포인터 4) 스레드 (Thread) 프로세스내에서의단위작업프로그램을의미하는것으로하나의프로세스를여러개의스레드로구성하여병행수행성을증대하고, 응용프로그램처리능력을향상시킨다. ( 기억공간절약, 응답시간단축효과 ) [ 1 ]
사용자수준의스레드 : 사용자의라이브러리에의해운영, 속도는빠르나, 구현이복잡하다. 커널수준의스레드 : 운영체제커널에의해운영, 속도는느리나, 구현이단순하다. 스케줄링 (Scheduling) 1) 스케줄링의정의 프로세스가생성되어실행될때필요한시스템의여러자원을해당프로세스에게할당하는작업을의미한다. 프로세스가생성되어완료될때까지프로세스는여러종류의스케줄링과정을거친다. 2) 스케줄링의종류 장기스케줄링 중기스케줄링 단기스케줄링 어떤프로세스가시스템의자원을차지할수있도록할것인가를결정하여준비상태큐로보내는작업 작업스케줄링, 상위스케줄링이라고도한다. 작업스케줄러에의해수행된다. 어떤프로세스들이 CPU를할당받을것인지결정하는작업을의미한다. CPU를할당받으려는프로세스가많을경우프로세스를일시보류시킨후다시활성화시켜일시적으로부하를줄인다. 프로세스가실행되기위해 CPU를할당받는시기와특정프로세스를지정하는작업 프로세서스케줄링, 하위스케줄링이라고도한다. 프로세서스케줄링및문맥교환은프로세서스케줄러에의해수행된다. 3) 문맥교환 (Context Switching) 하나의프로세스에서다른프로세스로 CPU가할당되는과정에서발생하는것으로새로운프로세스에 CPU를할당하기위해현재 CPU가할당된프로세스의상태정보를저장하고, 새로운프로세스의상태정보를설정하여 CPU를할당하고실행되도록하는작업으로다중프로그래밍시스템에이용되는작업이다. 4) 시스템자원의효율적운영을위한스케줄링이용목적 공정성 모든프로세스에공정한자원분배할당 처리율증가 단위시간당프로세스를처리하는비율을증가시킨다. CPU 이용률증가 프로세스실행과정에서주기억장치를액세스하거나입출력명령의실행등의원인에의해 발생할수있는 CPU 의시간낭비를줄여서 CPU 가순수프로세스를실행하는데사용되는시 간비율을증가시킨다. 우선순위제도 우선순위가높은프로세스를먼저실행한다. 오버헤드의최소화 발생오버헤드를최소화시킨다. 응답시간최소화 반환시간최소화 대기시간최소화 작업을지시하고, 반응하기시작하는시간의최소화 프로세스를제출한시간부터실행이완료되는시점까지의시간을최소화 프로세스가준비상태큐에서대기하는시간을최소화 무한연기회피 자원사용을위한무한연기되는상태를방지한다. 균등한자원활용 메모리및입출력장치등의자원을균형있게사용 5) 프로세서스케줄링 ( 프로세스스케줄링 ) 기법 1 비선점 (Non-preemptive) 스케줄링 [ 2 ]
이미할당된 CPU를다른프로세스가강제로빼앗아사용하지못하도록하는기법 프로세스가 CPU를할당받으면해당프로세스가완료될때까지 CPU를사용한다. 모든프로세스에대한요구를공정하게처리할수있다. 프로세스응답시간의예측이용이하며, 일괄처리방식 중요한작업 ( 짧은작업 ) 이중요하지않는작업 ( 긴작업 ) 을기다리는경우가생긴다. FCFS, SJF, 우선순위, HRN, 기한부등의알고리즘이있다. 2선점 (preemptive) 스케줄링 하나의프로세스가 CPU를할당받아실행하고있더라도우선순위가높은다른프로세스가 CPU를강제로빼앗아사용할수있는기법 우선순위가높은프로세스를빨리처리한다. 빠른응답시간을요구하는대화식시분할시스템에사용한다. 많은오버헤드를일으킨다. 선점이가능하도록일정시간배당에대한인터럽트용타이머클럭이필요하다. Round Robin, SRT, 선점우선순위, 다단계큐, 다단계피드백큐등이있다. 비선점 (Non-Preemption) 스케줄링 ( 작업의순서를변경하지못함 ) 1)FCFS(First Come First Service 또는 First In First Out: 선입선출 ) 준비상태큐에도착한순서에따라차례로 CPU를할당하는방법으로짧은작업이긴작업처리를위해대기하거나중요한작업이중요하지않는작업의처리를위해대기하게된다. 2)SJF(Shortest Job First: 단기작업우선 ) 준비상태큐에도착한프로세스중에서실행시간이가장짧은것부터 CPU 를할당하는방법으로가장적은평균대기시간 을제공하지만실행시간이긴프로세스는무기한대기하는문제가발생하게된다. 3)HRN(Hightest Response-ratio Next) 실행시간이긴프로세스를위한기법으로운선순위계산식을이용하여운선순위를주는방식이다. 실행시간및대기시간에좌우되어진다. (SJF 의단점을고려하여대기시간을고려 ) 대기시간 서비스 실행 시간 우선순위계산식 서비스 실행 시간 4)DeadLine( 기한부 ) 프로세스에게일정한실행시간을주고그시간동안완료하지못하면제거또는재실행시키는방식이다. 프로세스의일정시간을정확하게산출해야하기때문에사용자는프로세스에대한정확한정보를주어야한다. 프로세스가여러개동시에수행될경우에스케줄링이매우복잡해지고, 오버헤드가발생한다. 5)Priority( 우선순위 ) 준비상태큐에있는프로세스에각각의중요도에따른우선순위를주어서그우선순위가가장높은프로세스에게 CPU를할당하는방식이다. 우선순위가같으면 FCFS방식으로처리하며, 우선순위는프로세서의종류, 특성, 용도에따라다르게부여한다. 우선순위가가장낮은프로세스는무기한대기하는문제가발생하게된다. 무기한대기 = 무한연기 = 기아상태 1에이징 (Aging) 기법 SJF방식에서발생하는가장짧은실행시간을가진프로세스의무기한대기문제와, Priority방식에서발생하는우선순위가낮은프로세스의무기한대기문제를해결하기위해일정대기시간이지나면우선순위레벨을한단계씩올려서가능한빠른시간내에처리가될수있도록하는방법이다. [ 3 ]
선점 (Preemption) 스케줄링 ( 작업의순서를변경함 ) 1)SRT(Shortest Remaining Time) 비선점 SJF방식을보안한것으로현재실행중인프로세스의남은시간과준비상태큐에새로이도착한프로세스의실행시간을비교하여가장짧은실행시간을가지는프로세스에게 CPU를할당하는방식이다. 각프로세스의실행시간정보를예측하고기억해야하므로오버헤드가증가한다. 2)RR(Round Robin) 비선점 FCFS방식을보안한것으로시분할시스템에적합한방식이다. 준비상태큐에들어온순서대로 CPU를할당하지만, 할당된시간동안만실행한후실행이완료되지못하면우선다음프로세스에게 CPU를할당하여주고현재프로세스는제거되는것이아니라준비상태큐의가장뒤로가서나머지수행작업을마치게된다. 할당된시간이크면 FCFS와같아지고, 작으면문맥교환및오버헤드가자주발생한다. 3)MQ(Multi-level Queue: 다단계큐 ) 프로세스를특정한그룹으로분류하여각각의그룹에각각의준비상태큐를두어사용하는기법으로우선순위의그룹별 ( 시스템-> 대화형-> 편집-> 일괄처리 ) 로준비상태큐를나누어배치한다. 각각의준비상태큐는독립된스케줄링기법을가지며, 그룹에배치된프로세스는타그룹으로이동하지못한다. 하위단계의프로세스를수행중이라도상위단계의준비상태큐에프로세스가들어오면상위단계에있는준비상태큐의프로세스에게 CPU를할당한다. 4)MFQ(Multi-level Feedback Queue: 다단계피드백큐 ) 다단계큐가각각의준비상태큐의이동일불가능하기때문에그룹별준비상태큐의이동이가능하도록한방식이다. RR방식의개념을이용하여프로세스가작업을완료하지못하면바로위단계의준비상태큐로이동시키는것이다. 상위단계의준비상태큐는우선순위가높고, 할당된시간이짧다. 프로세스병행제어 1) 프로세스의병행개념 두개이상의프로세스가동시에실행되어있는상태를말하는것으로여러프로세스는각각독립적으로실행되거나상호관계를가지며실행되어진다. 프로세스가두개이상실행되어있더라도어느한순간에는하나의프로세스가 CPU를할당받아작업을수행하므로그에대한중간제어역할이필요하다. 2) 임계구역 (Critical Section) 여러개의프로세스가공유하는데이터와자원 ((CPU, 주기억장치, 디스크, 입출력장치, 버퍼 ) 에대해서어느한순간에는하나의프로세스만데이터및자원을사용하도록지정한공유자원영역이다. 임계구역에는하나의프로세스만접근하고, 프로세스가자원을반납해야만다른프로세스가사용할수있다. 특정프로세스가단독으로독점할수는없으며, 자원을공유하는구역이므로작업을빨리사용해야한다. 3) 상호배제기법 (Mutual Exclusion) 임계구역에자원을특정프로세스가사용할때다른프로세스가접근하지못하도록하는기법으로임계구역을관리하는방식이다. 소프트웨어적 : 데커알고리즘 ( 프로세스 2개 ), 피터슨알고리즘 ( 프로세스 2개 ), 빵집알고리즘 ( 프로세스여러개 ) 하드웨어적 : Test And Set 기법, Swap 명령어기법 4) 동기화기법 (Synchronization) 상호배제의한형태로두개이상의프로세스가있을때각프로세스에대한처리순서를결정하는방법이다. [ 4 ]
1세마포어 (Semaphore) (P연산, V연산 ) 각각의프로세스에게제어신호를전달하여순서대로작업을수행하도록하는기법이다. 하나의프로세스가자원을공유하고자할때우선적으로다른프로세스가자원을점유하여사용중인지확인한다. 다른프로세스가사용중이면대기하고그렇지않으면해당자원의사용함을통보하고사용이끝나면종료사실을다시알려준다. 2모니터 (Monitor) (Sign연산, Wait연산 ) 특정공유자원을프로세스에게할당하기위해데이터와데이터처리에대한프로시저로구성되어작업을수행하도록하는기법이다. ( 병행성구조 ) 자료의추상화 ( 정보은폐 ) 의개념을사용한다. 모니터내의공유자원을사용하기위해서는프로세스는모니터의진입부를호출한다. 어느한순간에는반드시하나의프로세스만진입이가능하다. 교착상태 (Dead Lock) 1) 교착상태의개념 두개이상의프로세스가각각의공유자원을사용하고있으면서다른자원을요구하여무한정대기하는상태를의미한다. 이는상호배제가공유자원을사용할때하나의프로세스만접근하도록하기때문에발생하는현상이다. 2) 교착상태가일어나기위한네가지조건 ( 하나라도만족하지않으면일어나지않음 ) 상호배제 (Mutual Exclusion) 공유자원을하나의프로세스만공유해야한다. 점유와대기 (Hold and Wait) 최소한하나의자원을점유하고있고, 다른프로세스가점유한자원을이용하기 위해대기하는프로세스가있어야한다. 비선점 (Non-Preemption) 다른프로세스에할당된자원을강제로중지할수없어야한다. 환형대기 (Circular Wait) 공유자원과공유자원을사용하려는프로세스가원형으로구성되어자신에게 할당된자원을점유하면서인접한양쪽프로세스의자원을요구해야한다. 3) 교착상태의해결 1예방기법 (Prevention) 교착상태가일어나지않도록미리시스템을제어하는방법으로교착상태의네가지발생조건에서하나를제거한다. 엄격한자원배당과해제정책이필요하다. 상호배제 : 한번에하나이상의프로세스가공유자원을사용하게한다. [ 실제사용 ( 구현 ) 안함 ] 점유대기 : 프로세스에게전체자원을할당하여프로세스가대기할수없게하거나, 자원이점유되지않을때만자원요구가가능하게한다. 비선점 : 자원을점유한프로세스가다른자원을요구시에점유자원을우선반납하고, 요구한자원을사용하도록한다. 환형대기 : 자원을원형이아닌선형순서로만들어고유한순서번호를주고한쪽방향으로만자원을요구하도록한다. 시스템의자원낭비가가장심하다. 2회피기법 (Avoidance) 교착상태발생시피해나가는방법으로은행가알고리즘이사용된다. 은행가알고리즘 - E. J. Dijkstra가제안한것으로은행에서모든고객의요구가충족되도록현금을할당하는기법 - 자원의양과프로세스의수가일치해야한다. - 프로세스의모든요구사항을유한된시간내에할당하는것이보장된다. 3 회복기법 (Recovery) [ 5 ]
교착상태를발생시킨프로세스를강제종료또는해당자원을선점처리하여반환시키는기법 프로세스종료 : 교착상태의모든프로세스를종료하거나, 하나씩종료시켜서해결한다. 자원선점처리 : 우선순위가낮은프로세스, 수행율이적은프로세스, 자원의사용빈도가적은프로세스등을위주로해당프로세스자원을선점처리하여다른프로세스에게할당한다. 4 발견기법 (Detection) 시스템에서교착상태가발생여부를체크하여교착상태에있는자원과프로세스를찾는기법이다. [ 6 ]