2024/11/17 5

컨텍스트 스위칭

컴퓨터의 멀티태스킹운영체제의 멀티태스킹을 생각해 보자. CPU 코어는 하나만 있다고 가정하자. 스레드 A, 스레드 B가 있다. 운영체제는 먼저 스레드 A를 실행한다. 멀티태스킹을 해야 하기 때문에 스레드 A를 계속 실행할 수 없다. 스레드 A를 잠 시 멈추고, 스레드 B를 실행한다. 이후에 스레드 A로 그냥 돌아갈 수 없다. CPU에서 스레드를 실행하는데, 스레드 A의 코드가 어디까지 수행되었는지 위치를 찾아야 한다. 그리고 계산하던 변수들의 값을 CPU에 다시 불러들여야 한다. 따라서 스레드 A를 멈추는 시점에 CPU에서 사용하던 이런 값들을 메모리에 저장해두어야 한다. 그리고 이후에 스레드 A  를 다시 실행할 때 이 값들을 CPU에 다시 불러와야 한다. 이러한 과정을 콘텍스트 스위칭이라고 한다.컨텍..

운영체제 2024.11.17

Thread - Scheduling,Thread

CPU 코어는 1개이고, 프로세스는 2개이다. 프로세스 A는 스레드1개 프로세스B는 스레드가 2개 있다. 프로세스는 실행 환경과 자원을 제공하는 컨테이너 역할을 하고, 실제 CPU를 사용해서 코드를 하나하나 실행하는 것은 스레드이다 단일 코어 스케줄링운영체제는 내부에 스케줄링 큐를 가지고 있고, 각각의 스레드는 스케줄링 큐에서 대기한다. CPU에 어떤 프로그램이 얼마만큼 실행될지는 운영체제가 결정하는데 이것을 스케줄링(Scheduling)이라 한다. 이때 단순히 시간으로만 작업을 분할하지는 않고, CPU를 최대한 활용할 수 있는 다양한 우선순위와 최적화 기법을 사용한다. 우리는 운영체제가 스케줄링을 수행하고, CPU를 최대한 사용하면서 작업이 골고루 수행될 수 있게 최적화한다.

운영체제 2024.11.17

Thread - process ,thread

프로세스프로그램은 실제 실행하기 전까지는 단순한 파일에 불과하다.프로그램을 실행하면 프로세스가 만들어지고 프로그램이 실행된다.이렇게 운영체제 안에서 실행 중인 프로그램을 프로세스 라 한다.프로세스는 실행 중인 프로그램의 인스턴스이다.  자바 언어로 비유를 하자면 클래스는 프로그램이고, 인스턴스는 프로세스이다.프로세스는 실행 중인 프로그램의 인스턴스이다. 각 프로세스는 독립적인 메모리 공간을 갖고 있으며, 운영체제에서 별 도의 작업 단위로 분리해서 관리된다. 각 프로세스는 별도의 메모리 공간을 갖고 있기 때문에 서로 간섭하지 않는다. 그 리고 프로세스가 서로의 메모리에 직접 접근할 수 없다. 프로세스는 이렇듯 서로 격리되어 관리되기 때문에, 하나의 프 로세스가 충돌해도 다른 프로세스에는 영향을 미치지 않는..

운영체제 2024.11.17

Thread - 멀티태스킹 + 멀티프로세싱

멀티태스킹만약 CPU가 매우 빠르게 두 프로그램의 코드를 번갈아 수행한다면, 사람이 느낄 때 두 프로그램이 동시에 실행되는 것 처럼 느껴질 것이다. (대략 0.01초(10ms) 단위로 돌아가며 실행한다.)  이 방식은 CPU 코어가 프로그램A의 코드를 0.01초 정도 수행하다가 잠시 멈추고, 프로그램B의 코드를 0.01초 정도 수행한다. 그리고 다시 프로그램A의 이전에 실행중인 코드로 돌아가서 0.01초 정도 코드를 수행하는 방식으로 반복 동작한다. 이렇게 각 프로그램의 실행 시간을 분할해서 마치 동시에 실행되는 것 처럼 하는 기법을 시분할(Time Sharing, 시간 공유) 기법이라 한다. 이런 방식을 사용하면 CPU 코어가 하나만 있어도 여러 프로그램이 동시에 실행되는 것 처럼 느낄 수 있다. 참고..

운영체제 2024.11.17