목록Computer Science/운영체제 (9)
Live Today
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cElCvp/btrYAnpgSJh/lqQ4fpdXHNa5fK1DqCm4LK/img.png)
왜 프로세스 동기화가 필요한가요 ? 결국, 공유하는 하나의 자원에 대해서, 여러 프로세스가 동시에 접근할 때 시간적인 차이로 생길 수 있는 데이터의 불일치 문제가 존재할 수 있다. 이러한 문제를 해결하고자 하는 것이 프로세스 동기화(Process Synchroniztion)이다. Race Condition (경쟁 조건) : 여러 프로세스가 공유 자원에 동시에 접근할 때 실행 순서에 따라 실행 결과가 달라질 수 있는 상황 Q. 경쟁상태(Race Condition)이란 무엇인가요? 프로세스가 어떤 순서로 데이터에 접근하느냐에 따라 결과값이 달라질 수 있는 상황을 말합니다. 둘 이상의 입력이나 조작이 동시에 일어나 의도하지 않은 결과를 가져오는 경우를 말합니다. 동시 접근 시 자료의 일관성을 해치는 결과가 나..
🔹인터럽트란 ? CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능이다. 대부분의 컴퓨터는 한 개의 CPU를 사용하므로 한 순간에는 하나의 일 밖에 처리할 수 없기 때문에 어떤 일을 처리하는 도중에 우선 순위가 급한 일을 처리할 필요가 있을 때 대처할 수 있는 방안이 필요하다. 예를 들면, 키보드의 키를 하나 누르면, 눌려진 키 코드 값이 키보드 버퍼에 입력된 후 CPU에 인터럽트가 걸린다. 그럼 현재 처리하던 작업에 대한 정보를 수집하여 저장한 뒤에 인터럽트 서비스 루틴(Interrupt Service Routine)을 수행한다.(이 경우에는 키보드 버퍼에 있는 키 코드 값을 가져가는 일을 한다.) 이렇게 인터럽트 처리를 마친 후에는 다시 이전에 처리하던 작업..
✅ Context Switching 이란 ? 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정을 말합니다. 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 Context Switching이 일어남 💡 즉, 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switch(Context Switching)라고 한다. ✅ 왜 Context Switching이 필요한가? Computer가 매번 하나..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bfHAqY/btrXHO9LsNL/74DHS2WGNfD34oGkFu7WK0/img.png)
프로세스 메모리 구조 코드(Code) 영역 프로그램 코드 자체 주기억장치에 CPU가 해석할 수 있는 Binary Code 상태로 올라가게 되는데 이 영역을 뜻한다. CPU에서 수행할 수 있는 기계어 명령 형태로 변환되어 저장되는 공간 데이터(Data) 영역 프로그램의 전역 변수(Global Variable)나 정적 변수(Static Variable)의 할당을 위해 존재 스택(Stack) 영역 지역 변수(Local Variable) 할당과 함수 호출 시 전달되는 인수(Argument) 값 위해 존재 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터(지역변수, 매개변수, 리턴값 등)를 임시로 저장하는 공간 힙(Heap) 영역 동적 할당 프로그래머가 필요할 때마다 사용하는 메모리 영역 🌐 참고 링크 http..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RMvb8/btrXBAKmgDz/yat1HV6auKPK1JJAqGbHPk/img.png)
프로세스는 프로세스에 의해서 만들어진다. 부모 프로세스 (Parent Process) : 다른 프로세스를 생성한 프로세스 자식 프로세스 (Child Process) : 다른 프로세스에 의해 생성된 프로세스 형제 프로세스 (Sibling Process) : 부모가 동일한 프로세스들 간의 관계 프로세스 트리 (Process Tree) : 부모 - 자식 관계를 트리형태로 나타낼 수 있음 ✅ 프로세스 생성 단계 자식은 부모의 공간을 복사한다. 이를 복제 생성된다고 말한다. 부모의 공간이란 프로세스 문맥을 의미한다. Address Space(OS data, binary) & code, data, stack + PC까지 복제를 해서 태어난다. 그리고 자식 프로세스는 복제한 공간에 새로운 프로그램을 올린다. 즉 자식..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/yQ4HT/btrXnvwrcu5/DtuLzsVsgIAQGtOTLpO99k/img.png)
1. new : 프로세스 생성중 프로세스를 생성하고 있는 단계로 커널 공간에 PCB가 만들어진 상태 2. ready : 프로세스가 CPU를 기다리는 상태 아직 CPU를 받지는 않았지만 CPU를 할당 받으면 바로 실행 가능한 상태 ready상태를 가지는 여러개의 프로세스들이 존재할 수 있음 프로세스가 메모리에 적재된 상태로 실행하는데 필요한 자원을 모두 얻은 상태 3. running : 프로세스가 CPU를 할당받아 명령어를 수행중인 상태 일반적으로 CPU가 하나이기 때문에, 여러 프로세스가 동시에 실행되도 실제로 실행중인 프로세스는 매 시점 하나 뿐임 4. blocked : 프로세스가 CPU를 할당 받아도 당장 실행할 수 없는 상태 현재 프로세스가 I/O작업 등을 처리하는 상태를 의미 5. terminat..
사용자 수준 스레드와 커널 수준 스레드는 생성 주체가 누구냐에 따라 구분된다. 사용자가 라이브러리를 통해 만들고 관리하는 스레드는 사용자 수준 스레드이고, OS의 커널이 만들고 관리하는 스레드는 커널 수준 스레드이다. ✅ 사용자 수준 스레드 사용자가 스레드 관련 라이브러리로 구현해 사용하는 스레드를 사용자 수준 스레드라고 한다. 스레드와 관련된 모든 행위를 사용자 영역에서 하기 때문에, 커널은 사용자 수준 스레드의 존재를 알지 못하고, 스레드 교환에 개입하지 않는다. 사용자 수준 스레드 N개가 커널 수준 스레드 1개에 매핑되므로, 다대일 스레드 매핑이라고 한다. 장점 커널에 독립적으로 스케줄링을 할 수 있어 모든 운영체제에 적용할 수 있다. 이식성이 높다. 스케줄링이나 동기화를 위해 커널을 호출하지 않으..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/AbwEW/btrXm8UNJKZ/4DWg9rtSnbm2bxueE8IacK/img.png)
PCB는 OS의 스케줄러에 의해 Context Switching되는 프로세스의 정보 단위를 의미하고 TCB는 스레드 라이브러리에 의해 Context Switching되는 스레드의 정보 단위를 의미한다. 즉, 우리가 흔히 배우는 OS의 스케줄러가 스케줄링 해주는 것은 프로세스의 PCB이고, TCB는 프로세스에 있는 스레드 라이브러리에 의해 스케줄링 되는 것이다. 그래서 Context Switching이 일어날 때 멀티 프로세스를 통해 PCB를 컨텍스트 스위칭 하는 것 보다 멀티 스레드를 통해 TCB를 컨텍스트 스위칭 하는 것이 더 오버헤드가 적다는 것이다.(위의 그림만 봐도 TCB가 PCB보다 작은 크기를 가지고 있다.) PCB는 운영체제에게 프로세스에 대한 중요한 정보를 제공해주는 자료구조 테이블이다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HaUVA/btrXhP8kems/YL88Byy1XULkhkALcnx8Y0/img.png)
프로그램이란 ? 어떤 작업을 위해 실행할 수 있는 파일로, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다. 프로세스란 ? 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램으로, 메모리에 올라와 실행되고 있는 프로그램의 인스턴스를 말한다. 프로세스는 운영체제로부터 시스템 자원을 할당받는 작업의 단위이며 즉, 동적인 개념으로는 실행된 프로그램을 의미한다. 프로세스 특징 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다..