-
멀티프로그래밍 및 멀티태스킹시스템/운영체제 2020. 5. 4. 08:55
운영체제의 가장 중요한 측면은 효율성을 위한 멀티프로그래밍이다. 하나의 프로세스가 CPU를 독점하는 것은 좋지 않다. 왜냐하면 다른 프로세스들이 작업을 할 수 없기 때문이다. 그래서 여러 작업들을 병렬 및 병행 처리할 수 있게 하는 멀티태스킹 능력이 굉장히 중요하다. 여기서 병렬[parallelism]은 실제로 2개 이상의 작업이 동시에 처리되는 것을 말하고 병행[conccurency]은 하나의 프로세서에서 여러개의 작업이 순차적으로 빠르게 처리되어 작업이 동시에 처리되는 것처럼 보이게 하는 것이다.
멀티 프로그래밍(Multi-Programming)
멀티프로그래밍은 CPU가 가급적 많은 작업을 처리할 수 있도록 여러 개의 작업(코드+데이터)으로 구성된다. 전체 작업 중의 일부가 '장기 스케줄러'에 의해서 HDD/SSD에서 memory(혹은 ready queue)에 상주하고 다시 메모리에서 '단기 스케줄러'에 의해 선택된 프로세스가 CPU로 이동하여 실행된다.
만약 프로세스들 모두가 메모리에 올라올 수 없다면 swapping을 통해서 프로세스를 디스크로 내리고 메모리로 올리는 작업이나 가상 메모리(virtual memory)를 통해 HDD/SSD의 일부를 메모리로 사용하여 실제 메모리를 초과하는 프로세스들을 실행시켜야 한다.
CPU가 처리하는 프로세스(혹은 스레드)를 바꾸는 것을 문맥 전환이라고 한다. 프로세스가 여러 개라도 프로세스 스스로가 느끼기에 자신이 혼자서 CPU를 사용하고 있다고 생각하게끔 CPU의 문맥 전환 속도가 빨라야한다.
'시스템 > 운영체제' 카테고리의 다른 글
자원 관리 (0) 2020.05.08 멀티프로그래밍 환경에서의 문제점 (0) 2020.05.07 클러스터형 시스템(Clustered System) (0) 2020.05.04 대칭과 비대칭 멀티 프로세싱 (0) 2020.04.24 CPU의 발전과 트렌드 (0) 2020.04.24