컴퓨터 멀티태스킹
Computer multitasking

컴퓨팅에서 멀티태스킹은 일정 기간 동안 여러 태스크(프로세스라고도 함)를 동시에 실행하는 것이다.새로운 태스크는 이미 시작된 태스크가 끝나기 전에 종료되기를 기다리는 대신, 이미 시작된 태스크가 끝나기 전에 중단될 수 있다.그 결과, 컴퓨터는 인터리브 방식으로 여러 작업의 세그먼트를 실행하는 반면, 태스크는 중앙처리장치(CPU)와 메인메모리 같은 공통 처리 자원을 공유한다.멀티태스킹은 실행 중인 프로그램을 자동으로 중단시켜 그 상태(부분 결과, 메모리 내용, 컴퓨터 레지스터 내용)를 저장하고 다른 프로그램의 저장된 상태를 로딩하여 제어권을 이체한다.이 "컨텍스트 스위치"는 고정 시간 간격(사전 빈 멀티태스킹)에서 시작하거나, 실행 중인 프로그램이 중단될 수 있을 때(협동적인 멀티태스킹) 감시 소프트웨어에 신호를 보내도록 코딩될 수 있다.
멀티태스킹은 정확히 동시에 여러 작업을 병렬로 실행할 필요가 없다. 대신 주어진 시간 동안 둘 이상의 작업을 진행할 수 있다.[1]멀티프로세서 컴퓨터에서도 멀티태스킹은 CPU가 있는 것보다 더 많은 태스크가 실행되도록 한다.
멀티태스킹은 적어도 1960년대 이후 컴퓨터 운영체제의 공통적인 특징이다.그것은 컴퓨터 하드웨어의 보다 효율적인 사용을 가능하게 한다; 프로그램이 사용자 입력이나 주변장치와의 입출력 전송과 같은 외부 이벤트를 기다리고 있는 경우, 중앙 프로세서는 여전히 다른 프로그램과 함께 사용될 수 있다.시간 공유 시스템에서는 복수의 인간 운영자가 전용인 것처럼 동일한 프로세서를 사용하는 반면, 이면에는 컴퓨터가 개별 프로그램을 멀티태스킹해 많은 사용자에게 서비스를 제공하고 있다.멀티프로그래밍 시스템에서 작업은 외부 이벤트를 기다려야 할 때까지 또는 운영 체제의 스케줄러가 실행 중인 작업을 CPU에서 강제로 스왑할 때까지 실행된다. 산업용 로봇을 제어하도록 설계된 시스템과 같은 실시간 시스템은 적시에 처리되어야 한다. 단일 프로세서가 기계 이동 계산 간에 공유될 수 있다.mommunications와 사용자 인터페이스.[2]
종종 멀티태스킹 운영체제는 개별 태스크의 우선순위를 변경하기 위한 조치를 포함하므로 중요한 작업이 덜 중요하다고 여겨지는 작업보다 더 많은 프로세서 시간을 받는다.운영 체제에 따라 작업은 전체 애플리케이션 프로그램만큼 크거나 전체 프로그램의 일부를 수행하는 더 작은 스레드로 구성될 수 있다.
멀티태스킹 운영체제에 사용하기 위한 프로세서는 메모리 보호와 같은 여러 작업을 안전하게 지원하기 위한 특수 하드웨어와 사용자 모드 프로그램 오류로 인해 감시 소프트웨어가 손상되거나 전복되지 않도록 하는 보호 링을 포함할 수 있다.
독일어, 이탈리아어, 네덜란드어, 루마니아어, 체코어, 덴마크어, 노르웨이어 등 여러 언어에서 같은 단어가 사용되면서 '멀티태스킹'이라는 용어는 국제적인 용어가 되었다.
멀티프로그래밍
컴퓨팅 초기에는 CPU 시간이 비쌌고 주변 장치도 매우 느렸다.컴퓨터가 주변기기에 대한 접근이 필요한 프로그램을 실행했을 때, 중앙처리장치(CPU)는 주변기기가 데이터를 처리하는 동안 프로그램 명령 실행을 중지해야 했다.이것은 보통 매우 비효율적이었다.
멀티프로그래밍 시스템을 사용한 최초의 컴퓨터는 J. 라이온스와 Co.가 소유하고 있는 영국의 레오 3세였다.일괄 처리 과정에서 컴퓨터 메모리에 여러 개의 다른 프로그램이 로드되었고, 첫 번째 프로그램이 실행되기 시작했다.첫 번째 프로그램이 주변 장치를 기다리는 지시에 도달했을 때, 이 프로그램의 컨텍스트는 멀리 저장되었고, 기억 속에 있는 두 번째 프로그램에는 실행 기회가 주어졌다.이 과정은 모든 프로그램 실행이 끝날 때까지 계속되었다.[3]
멀티프로그래밍의 사용은 가상 메모리와 가상 머신 기술의 도래로 향상되었고, 이는 개별 프로그램이 마치 다른 동시에 실행되는 프로그램이 모든 실용적인 목적을 위해 존재하지 않는 것처럼 메모리와 운영 체제 자원을 사용할 수 있게 했다.[citation needed]
멀티프로그래밍은 프로그램이 적시에 실행된다는 보장은 없다.사실, 첫 번째 프로그램은 주변 장치에 접근할 필요 없이 몇 시간 동안 잘 실행될 수 있다.인터랙티브 단말기에서 기다리는 사용자가 없었기 때문에, 이것은 문제가 되지 않았다. 사용자들은 펀치된 카드 한 장을 교환원에게 건네주었고, 몇 시간 후에 인쇄된 결과를 얻기 위해 돌아왔다.멀티프로그래밍은 여러 배치를 처리할 때의 대기 시간을 크게 줄였다.[4][5]
협력 멀티태스킹
초기 멀티태스킹 시스템은 서로 시간을 자발적으로 할애하는 애플리케이션을 사용하였다.결국 많은 컴퓨터 운영체제에 의해 지원된 이 접근방식은 오늘날 협동 멀티태스킹으로 알려져 있다.현재는 CICS나 JES2 서브시스템과 같은 특정 애플리케이션을 제외하고는 대형 시스템에서는 거의 사용되지 않지만, 한때 여러 애플리케이션을 동시에 실행할 수 있도록 하기 위해 마이크로소프트 윈도 및 클래식 맥 OS에서 채택한 유일한 스케줄링 방식이었다.공동 멀티태스킹은 오늘날에도 RISC OS 시스템에서 사용되고 있다.[6]
협력적으로 여러 작업을 수행하는 시스템은 시스템의 다른 프로세스에 대한 시간을 정기적으로 포기하는 각 프로세스에 의존하기 때문에, 설계가 미흡한 프로그램 하나가 광범위한 계산을 수행하거나 대기 시간을 낭비하여 CPU 자체의 모든 시간을 소비할 수 있다. 둘 다 전체 시스템을 중단시킬 수 있다.서버 환경에서 이는 전체 환경을 허용할 수 없을 정도로 취약하게 만드는 위험이다.
선제적 멀티태스킹
선제적 멀티태스킹은 컴퓨터 시스템이 각 프로세스에 대해 보다 신뢰성 있게 정기적인 "슬라이스"의 작동 시간을 보장할 수 있게 해준다.또한 시스템은 수신 데이터와 같은 중요한 외부 이벤트를 신속하게 처리할 수 있도록 하며, 이는 하나 또는 다른 프로세스의 즉각적인 주의가 필요할 수 있다.운영체제는 이러한 하드웨어 기능을 활용하고 여러 프로세스를 선제적으로 실행하기 위해 개발되었다.출자 인수 멀티 태스킹은 PDP-6 모니터와 MULTICS에 1964년, OS/360 기계화 화염 방사기에 1967년과 유닉스에서 1969년에, 컴퓨터들 DEC의 PDP-8로 작은 몇몇 운영 체계에서 사용할 수 없었습니다, 리눅스, 솔라리스, BSD의 derivatives,[7]와의 현대 버전과 같은 모든 유닉스 계열 운영 체제,의 주요 특징 o. 실시되었다f창문들
언제라도 특정 시간에 프로세스는 입력 또는 출력을 기다리는 프로세스("I/O 바운드"라고 함)와 CPU를 충분히 활용하고 있는 프로세스("CPU 바운드")의 두 가지 범주로 분류할 수 있다.원시 시스템에서 소프트웨어는 요청된 입력(예: 디스크, 키보드 또는 네트워크 입력)을 기다리는 동안 종종 "poll" 또는 "busy wait"하곤 했다.이 기간 동안 이 시스템은 유용한 작업을 수행하지 못하고 있었다.그 요청한 자료의 도착 수행에 적절한 수익 보장될 수 있는 인터럽트가 차단되 프로세스를 창출할 것 인터럽트이고 선제적 다중 작업의 출현과 함께, 입출력 마련 과정 또는 보류되는 필요한 데이터의 도착할 때까지, 다른 프로세스 CPU이용하도록 허용."차단" 수 있다.[표창 필요한]
홈 유저들이 이용할 수 있는 가장 초기 선제적인 멀티태스킹 OS는 1984년에 출시된 싱클레어 QL의 싱클레어 QDOS였지만, 이 기계를 구입한 사람은 극소수였다.이듬해 출시된 코모도르의 아미가(Amiga)는 이 기술을 사용한 최초의 상업적으로 성공한 가정용 컴퓨터였으며, 멀티미디어 능력 덕분에 현대 멀티태스킹 개인용 컴퓨터의 선조가 뚜렷해졌다.마이크로소프트는 1990년대 초 윈도 NT 3.1과 윈도 95를 개발하면서 선제적인 멀티태스킹을 주력 운영체제의 핵심 기능으로 삼았다.나중에 Mac OS X에 의해 Apple Macintosh에서 Unix와 유사한 운영 체제로서 모든 기본 애플리케이션에 대해 선제적인 멀티태스킹을 사용하는 것이 채택되었다.
네이티브 32비트 애플리케이션을 미리 멀티태스킹하는 윈도 9x와 윈도 NT 제품군에서도 비슷한 모델이 사용된다.[8]x86-64와 이타늄 아키텍처용 64비트 버전의 윈도 에디션은 기존 16비트 애플리케이션을 더 이상 지원하지 않기 때문에 지원되는 모든 애플리케이션에 대해 선제적인 멀티태스킹을 제공한다.
실시간
멀티태스킹의 또 다른 이유는 단일 프로세서 시스템에 의해 제어되어야 하는 관련성이 없는 다수의 외부 활동이 있는 실시간 컴퓨팅 시스템의 설계에 있었다.그러한 시스템에서 계층적 인터럽트 시스템은 주요 활동이 가용 프로세스 시간의 더 큰 몫을 차지하도록 보장하기 위해 프로세스 우선순위와 결합된다.[citation needed]
멀티스레딩
멀티태스킹으로 컴퓨터의 처리량이 크게 향상됨에 따라 프로그래머들은 응용프로그램을 협력 프로세스(예: 입력 데이터를 수집하는 한 프로세스, 입력 데이터를 처리하는 한 프로세스, 디스크에 결과를 작성하는 한 프로세스)의 집합으로 구현하기 시작했다.그러나 이를 위해서는 프로세스가 데이터를 효율적으로 교환할 수 있는 몇 가지 도구가 필요했다.[citation needed]
스레드는 데이터를 교환하기 위해 프로세스를 협력하는 가장 효율적인 방법이 전체 메모리 공간을 공유하는 것이라는 생각에서 생겨났다.따라서 스레드는 동일한 메모리 컨텍스트에서 실행되며 다른 리소스를 열린 파일과 같은 상위 프로세스와 공유하는 프로세스다.스레드 간 전환은 메모리 컨텍스트의 변경을 수반하지 않기 때문에 스레드는 경량 프로세스로 설명된다.[9][10][11]
스레드가 선제적으로 스케줄링되는 반면, 일부 운영체제는 협력적으로 스케줄링되는 섬유라는 이름의 스레드에 변형을 제공한다.섬유를 제공하지 않는 운영체제에서 응용 프로그램은 작업자 기능에 대한 반복적인 호출을 사용하여 자체 섬유를 구현할 수 있다.섬유는 나사산보다 훨씬 가벼우며, 여러 프로세서가 장착된 기계에서 나사산의 장점 중 일부 또는 전부를 잃는 경향이 있지만, 프로그램하기가 다소 쉽다.[12]
일부 시스템은 하드웨어에서 멀티스레딩을 직접 지원한다.
메모리 보호
모든 멀티태스킹 시스템에 필수적인 것은 시스템 자원에 대한 접근을 안전하고 효과적으로 공유하는 것이다.메모리에 대한 접근은 어떠한 프로세스도 프로세스의 주소 공간 외부의 메모리 위치에 부주의하게 또는 의도적으로 읽거나 쓸 수 없도록 엄격하게 관리되어야 한다.이는 일반적인 시스템 안정성과 데이터 무결성 및 데이터 보안을 목적으로 한다.
일반적으로 메모리 액세스 관리는 MMU(메모리 관리 유닛)와 같이 지원 기능을 제공하는 하드웨어 메커니즘과 결합하여 운영 체제 커널의 책임이다.프로세스가 메모리 공간 외부의 메모리 위치에 액세스하려고 하면, MMU는 요청을 거부하고 커널에 적절한 조치를 취하도록 신호를 보낸다. 이는 일반적으로 위반 프로세스를 강제로 종료하는 결과를 초래한다.소프트웨어와 커널 설계, 문제의 특정 오류에 따라 사용자는 "세그먼트레이션 오류"와 같은 액세스 위반 오류 메시지를 받을 수 있다.
잘 설계되고 올바르게 구현된 멀티태스킹 시스템에서 주어진 프로세스는 결코 다른 프로세스에 속하는 메모리에 직접 접근할 수 없다.이 규칙의 예외는 공유 메모리의 경우에 있다. 예를 들어 시스템 V 프로세스 간 통신 메커니즘에서 커널은 여러 프로세스에서 상호 공유되도록 메모리를 할당한다.이러한 기능은 종종 Postgre와 같은 데이터베이스 관리 소프트웨어에서 사용된다.SQL.
설계상의 결함이나 잘못된 구현으로 인한 부적절한 메모리 보호 메커니즘은 악성 소프트웨어에 의해 잠재적으로 악용될 수 있는 보안 취약성을 허용한다.
메모리 스와핑
스왑 파일 또는 스왑 파티션을 사용하는 것은 운영 체제가 기본 메모리의 일부를 보조 저장소에 보관하여 물리적으로 사용할 수 있는 것보다 더 많은 메모리를 제공하는 방법이다.멀티태스킹과 메모리 스와핑은 전혀 관련이 없는 두 가지 기법이지만, 메모리 스와핑은 더 많은 작업을 동시에 로드할 수 있게 해주기 때문에 매우 자주 함께 사용된다.일반적으로 멀티태스킹 시스템은 실행 중인 프로세스가 2차 스토리지에서 메모리의 일부가 다시 로드될 때까지 기다려야 하는 지점에 도달했을 때 다른 프로세스가 실행되도록 허용한다.[13]
프로그래밍
완전히 독립적인 프로세스는 멀티태스킹 환경에서 프로그래밍하는 데 큰 문제가 없다.멀티태스킹 시스템의 복잡성은 대부분 업무 간에 컴퓨터 자원을 공유하고 공동운영 업무 운영을 동기화해야 하는 필요성에서 비롯된다.[citation needed]
동일한 자원에 접근하려는 여러 작업으로 인해 발생할 수 있는 잠재적 문제를 피하기 위해 다양한 동시 컴퓨팅 기법이 사용된다.[citation needed]
더 큰 시스템은 때때로 중앙 프로세서와 비대칭 다중 처리의 일종인 일부 I/O 프로세서로 구축되었다.[citation needed]
수년에 걸쳐 멀티태스킹 시스템이 정비되었다.현대적 운영체제는 일반적으로 프로세스의 우선순위를 정하는 세부 메커니즘을 포함하며, 대칭적 다중 처리 방식은 새로운 복잡성과 기능을 도입하였다.[14]
참고 항목
참조
- ^ "Concurrency vs Parallelism, Concurrent Programming vs Parallel Programming". Oracle. Archived from the original on April 7, 2016. Retrieved March 23, 2016.
- ^ 앤서니 랄스턴, 에드윈 D.라일리(edd), 컴퓨터 사이언스 제3판 백과사전, 반 노스트랜드 라인홀드, 1993년 ISBN 0-442-27679-6, 기사 "멀티태스킹" 및 "멀티프로그래밍"
- ^ MASTER PROGRAME AND PROGRAMME TRIALS SYSTEM PART 1 MASTER PROGRAMME SPECIFICATION. February 1965. section 6 "PRIORITY CONTROL ROUTINES".
- ^ Lithmee (2019-05-20). "What is the Difference Between Batch Processing and Multiprogramming". Pediaa.Com. Retrieved 2020-04-14.
- ^ "Evolution of Operating System". 2017-09-29. Retrieved 2020-04-14.
- ^ "Preemptive multitasking". riscos.info. 2009-11-03. Retrieved 2014-07-27.
- ^ "UNIX, Part One". The Digital Research Initiative. ibiblio.org. 2002-01-30. Retrieved 2014-01-09.
- ^ Joseph Moran (June 2006). "Windows 2000 &16-Bit Applications". Smart Computing. Vol. 16, no. 6. pp. 32–33. Archived from the original on January 25, 2009.
- ^ Eduardo Ciliendo; Takechika Kunimasa (April 25, 2008). "Linux Performance and Tuning Guidelines" (PDF). redbooks.ibm.com. IBM. p. 4. Archived from the original (PDF) on February 26, 2015. Retrieved March 1, 2015.
- ^ "Context Switch Definition". linfo.org. May 28, 2006. Archived from the original on February 18, 2010. Retrieved February 26, 2015.
- ^ "What are threads (user/kernel)?". tldp.org. September 8, 1997. Retrieved February 26, 2015.
- ^ 멀티태스킹 2019년 2월 19일에 액세스한 여러 가지 방법
- ^ "What is a swap file?". kb.iu.edu. Retrieved 2018-03-26.
- ^ "Operating Systems Architecture". cis2.oc.ctc.edu. Retrieved 2018-03-17.