Operating System, 운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어.
주된 목적은 컴퓨터의 하드웨어를 관리 및 사용자에게 편리함 제공.
대표적인 운영체제: Windows, Linux, Mac OSX, IOS
프로세스는 메인 메모리에 할당되어 실행중인 상태의 프로그램을 의미.
프로세스가 대기 하는 곳을 Queue라고 부른다.
한번에 한 프로세스만 수행 가능 하기 때문에 그에 따른 순서가 필요.
현대의 컴퓨터는 속도가 매우 빠르기 때문에 동시에 수행하는 듯한 효과를 부여.
Job Queue: 메인 메모리의 할당 순서를 기다리는 큐.
Ready Queue: CPU 점유 순서를 기다리는 큐.
Device Queue: I/O를 하기 위한 각 장치별 기다리는 큐.
쓰레드란 프로세스 내에서 실제로 작업을 수행하는 주체
하나의 프로그램은 하나의 쓰레드를 가지게 되는데, 프로세스 보다도 작은 실행 흐름의 최소 단위이다. 한 프로세스에 기본적으로 하나의 쓰레드가 존재한다.
하나의 프로그램에 2개 이상의 쓰레드가 존재하는것을 다중 쓰레드라고 표현한다.
이는 동시에 진행 되는것이 아니라 빠른 시간 간격으로 흐름이 스위칭 되기 때문에 동시에 진행 되는것처럼 보여지는것이다.
ex) Web Browser : 화면을 출력하는 쓰레드와 데이터를 읽어오는 쓰레드가 수행
동시성:
동시에 실행되는것처럼 보이는것. 싱글코어와 멀티코어에서 가능하다.
빠르게 작업을 전환(context switch)하면서 수행하기 때문에 여러 작업이 실행되는것처럼 보이는 현상.
병렬성:
실제로 동시에 실행되는것. 멀티코어에서만 가능.
여러 코어에서 여러 작업을 동시에 수행하며 성능을 올리는 역할.
메인 메모리, RAM. 프로그램 실행 시 필요한 주소와 정보들을 저장하고 사용할 수 있는 공간.
각 프로세스들은 독립된 메모리 공간을 갖게 되는데, 운영체제에서 이 메모리를 관리한다.
연속 메모리 할당을 통하여 프로세스를 메모리에 연속적으로 할당 할 수 있다.
내부 단편화: 프로세스가 사용하는 메모리 공간 안에서 사용되어지고 남는 부분.
외부 단편화: 사용 되어지지 않는 남아 있는 메모리 공간이 크더라도 연속적이지 않아 사용할 수 없게 되는 경우.
단편화 문제를 해결하기 위해서는 압축 기법을 사용하면 된다.
단편화된 공간들을 통합하여 빈 공간을 만드는 작업.
흩어져 있는 공간을 연속된 공간으로 만들면 할당할 수 없던 프로세스를 할당할 수 있게 된다.
Inter Process Communication, 프로세스 간 통신
프로세스는 완전히 독립된 실행 객체이고 다른 프로세스의 영향을 받지 않는다.
커널영역에서 IPC 설비를 통하여 내부 프로세스간에 통신을 할 수 있게끔 한다.
커널: 운영체제도 소프트웨어라 메모리에 올라가야 사용이 가능하다. 이때 메모리에 있는 운영체제의 일부분을 커널이라 부른다.