운영체제는 컴퓨터 시스템 자원들을 효율적으로 관리하여 사용자의 편의성과 시스템 성능을 극대화하는 시스템 소프트웨어입니다.
인터페이스는 GUI(입출력을 그래픽으로 표시하는 것), 마우스, 키보드 등으로 이루어집니다.
프로세스는 운영체제가 분배하고 자원을 할당한 작업 단위입니다.
프로그램을 실행하면 운영체제는 프로그램파일을 메모리에 넣게 되는데 이 메모리의 공간을 할당받아 실행되고 있는 프로그램을 프로세스라고 합니다.
이때 메모리 영역을 4가지형식으로 할당받습니다.
아까 말했 듯 프로세스는 커널이 제공하는 통신(IPC)을 사용해야 다른 프로세스의 자원에 접근할 수 있습니다.
쓰레드는 프로세스의 작업들을 실행 흐름에 따라 분리한 것입니다.
따라서 프로세스는 무조건 하나의 쓰레드를 가지고 있으며 최소한 가져야 하는 쓰레드 1개를 메인쓰레드라고 합니다.
쓰레드는 프로세스의 스택을 할당받고 나머지는 공유해서 사용합니다.
스택은 앞에서 봤듯 함수에 사용되는 코드들을 담고 있기 때문에 쓰레드의 독립적인 실행에는 할당받은 함수 자원 외에는 필요치않습니다. 이를 통해서 통신비용을 줄이고 자원을 효율적으로 관리할 수 있게 됩니다.
멀티프로세스는 여러개의 cpu가 여러개의 작업을 동시에 처리하는 것입니다.
멀티스레드는 하나의 프로세스에 여러개의 스레드로 자원을 공유하며 작업을 나누어 수행하는 것입니다.
인터럽트는 입출력장치나 예외상황의 이벤트가 발생했을 때 프로그램을 멈추고 상황을 처리하는 명령입니다.
인터럽트 발생
⇒ cpu는 실행하던 명령을 마치면 인터럽트 라인을 통해 인터럽트를 감지
⇒ 인터럽트벡터테이블을 읽어서 인터럽트처리루틴(ISR)으로 이동
⇒ 인터럽트를 처리하는 동안은 인터럽트를 금지시킴
⇒ 현재까지 수행한 상태를 PCB에 저장하고 PC에 다음 명령 주소를 저장
⇒ 인터럽트를 처리
⇒ 대피시킨 프로세서의 상태를 복원
⇒ 인터럽트 해제
⇒ PC값을 복원하여 이전 실행위치로 복귀
프로세스가 입력장치를 주기적으로 검사하며 신호를 기다리면 그때마다 프로세스는 작업을 멈춰야 하므로 오버헤드가 증가하고 시간이 낭비됩니다.