10. 콘텍스트 스위칭
·
CS
콘텍스트 스위칭을 이해하려면 인터럽트를 알아야 한다 인터럽트: 입출력 관련 이벤트가 발생하거나 예외 상황이 발생할 때 이에 대응할 수 있게 CPU에 처리를 요청하는 것 인터럽트가 발생하는 경우 입출력이 발생할 때 CPU 사용 시간이 만료되었을 때 자식 프로세스를 생성할 때 CPU는 하나의 프로세스만 처리할 수 있으므로 멀티 프로세스를 처리하려면 CPU 스케줄러에 의해 인터럽트가 발생하며 콘텍스트 스위칭이 이루어진다 콘텍스트: CPU가 처리하는 프로세스의 정보를 의미 콘텍스트 스위칭: 멀티 프로세스 환경에서 CPU가 처리 중인 프로세스의 정보를 바꾸는 것 처리 중인 프로세스 P1, 다음에 처리해야 하는 프로세스를 P2라고 가정 CPU가 P1을 처리하던 중 운영체제에 의해 인터럽트가 발생 P1은 유휴 상태(..
9. 멀티 프로세스와 멀티 스레드
·
CS
멀티 프로세스와 멀티 스레드 개념을 이해하려면 동시성과 병렬성을 알아야 한다 동시성: 하나의 코어에서 여러 작업을 번갈아 가면서 처리하는 방식 cpu는 한 번에 하나의 작업만 처리할 수 있어 여러 작업을 조금씩 돌아가면서 처리한다 이 작업을 콘텍스트 스위칭이라고 한다 병렬성: CPU가 여러개(멀티 코어) 있어 각 CPU에서 각 작업을 동시에 처리하는 방식 물리적인 시간 관점에서 동시에 여러 작업이 처리된다 멀티 프로세스: 응용프로그램 하나를 여러 프로세스로 구성하는 것을 의미 멀티 프로세스 환경에서는 한 프로세스가 죽어도 다른 프로세스에 영향을 주지 않는다 그래서 응용 프로그램을 프로세스 하나로 구성하는 것보다 여러 개로 구성하는 것이 안정적이다 그러나 시간과 메모리 공간을 많이 사용한다는 단점이 있다 ..
8. 운영체제 - 프로세스 상태도
·
CS
프로세스 상태도 모든 프로세스는 CPU에 의해 생성되고 소멸하는 과정을 거친다 이 과정에서 프로세스는 생성(new), 준비(ready), 대기(waiting), 실행(running), 종료(terminated)라는 5가지 상태로 존재 프로세스의 상태 생성(new): 프로세스가 PCB를 가지고 있지만 OS로부터 승인을 받기 전 준비(ready): OS로부터 승인받은 후 준비 큐에서 CPU 할당을 기다림 실행(running): 프로세스가 CPU 할당받아 실행함 대기(waiting): 프로세스가 입출력이나 이벤트 발생을 기다려야 해서 CPU 사용을 멈추고 기다림 종료(terminated): 프로세스 실행을 종료함 프로세스는 한 상태에서 다른 상태로 다음과 같이 변화한다 생성 -> 준비 생성 상태의 프로세스가 ..
7. 운영체제 - 프로세스의 생성
·
CS
- 새로운 프로세스는 기존 프로세스에서 fork() 함수를 호출해 생성한다. - fork 함수에는 함수에는 함수를 호출한 프로세스를 복사하는 기능이 있다 - 이 때 기존 프로세스를 부모 프로세스, 복사된 프로세스를 자식 프로세스라고 한다 - 부모 프로세스에서 fork() 함수 호출시, 부모 프로세스는 자식 프로세스의 PID 값을, 자식 프로세스는 0을 반환한다 운영체제가 프로세스를 종료하는 경우 프로세스가 운영체제의 종료 서비스( exit() )를 호출해 정상 종료하는 경우 프로세스의 실행 시간 또는 특정 이벤트 발생을 기다리는 시간이 제한된 시간을 초과한 경우 프로세스가 파일 검색 또는 입출력에 실패하는 경우 오류가 발생하거나 메모리 부족 등이 발생하는 경우 부모 프로세스는 다음과 같은 경우에 자식 프..
6. 운영체제 - PCB(Process Control block)
·
CS
PCB(Process Control block): 프로세스 제어 블록, OS가 프로세스를 제어하기 위해 프로세스 정보를 저장하는 것. PCB의 저장 목록 프로세스의 현재 상태 PID(process ID): 프로세스를 나타내는 고유 아이디 부모 프로세스의 PID 다음 실행할 명령어의 주소인 PC(ProgramCounter, 프로그램 카운터) 프로세스의 우선순위 메모리 제한 포인터 열린 파일 목록 등등
5. 운영체제 - 프로세스와 스레드
·
CS
프로세스: 컴퓨터에서 실행 중인 하나의 프로그램을 의미 프로그램은 특정 작업을 수행하기 위한 명령어의 집합 os는 프로그램을 실행하면서 디스크에 저장된 데이터를 메모리로 로드 프로세스는 os로부터 독립된 메모리 영역(코드, 데이터, 스택, 힙)을 할당받으며, 다른 프로세스의 메모리 영역에 접근할 수 없다 메모리 영역 스택(stack) 지역 변수, 함수의 매개변수, 반환되는 주소 값 등이 저장되는 영역 높은 주소 값에서 낮은 주소 값으로 메모리가 할당되며, 영역 크기는 컴파일 때 결정 됨 힙(heap) 사용자에 의해 동적 메모리 할당이 일어나는 영역 C언어에서 malloc()으로 할당되는 영역 낮은 주소 값에서 높은 주소 값으로 메모리가 할당 영역 크기는 런타임 때 결정 데이터 전역 변수, 정적 변수, 배..
4. 운영체제 - 커널과 시스템 콜
·
CS
커널(kernel): OS의 핵심 요소, 중요한 역할 수행 컴퓨터 하드웨어와 프로세스의 보안 자원 관리 CPU 스케줄링 메모리 관리 입출력 관리 파일 시스템 관리 하드웨어 추상화 운영체제는 커널에서 관리하는 중요 자원에 사용자가 쉽게 접근하지 못하도록 커널 모드와 사용자 모드로 나눈다. 커널모드 하드웨어에 직접 접근 메모리, CPU 같은 자원 사용 사용자모드 커널 모드의 자원에 접근할 수 없게 제한을 둠 사용자 모드에서 실행된 프로세스가 자원에 접근하려면 시스템 콜을 호출해 커널에 요청해야 함 시스템 콜: 사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수 커널은 시스템 콜로 받은 요청을 처리한 후 다시 시스템 콜로 결과 값을 반환 시스템콜을 사용하여 가능한 것들 프로세스..
3. 운영체제 - CPU와 메모리 구조
·
CS
CPU(Central Processing Unit, 중앙 처리 장치) - 컴퓨터의 뇌 역할 - 컴퓨터에서 프로그램을 실행하는 데 필요한 연산을 처리하고 수행한다. - 프로세서라고도 함 메모리 - 데이터를 저장하기 위한 기억장치 - 휘발성 메모리인 주 기억장치와 비휘발성 메모리인 보조 기억장치로 이루어짐 - 주 기억장치(메인 메모리)는 일반적으로 RAM을 가리킴 - 보조 기억장치는 SSD, HDD 등이 이에 해당 레지스터: CPU가 사용자 요청을 처리하는 데 필요한 데이터를 임시로 저장하는 기억장치. CPU 내부에 존재하여 접근 속도 빠름 캐시메모리: CPU와 RAM 사이의 속도 차이를 해결하기 위한 기억장치. CPU내부에 위치하며 레지스터 다음으로 빠름 RAM(Random Access Memory): 컴..
2. 운영체제 - 운영체제의 목적
·
CS
운영체제(OS, Operating System) 운영체제의 목적 1. 처리능력 향상: OS는 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상시킨다 2. 반환 시간 단축: OS는 사용자가 시스템에 요청한 작업을 완료할 때까지 소요되는 시간을 단축시킨다 3. 사용 가능도 향상: OS는 사용자가 자원을 즉시 사용할 수 있게 한다 ** 사용 가능도: 시스템 자원을 얼마나 빨리 제공할 수 있는가를 의미 4. 신뢰도 향상: OS는 입력 값에 대한 정확한 결과 값을 줄 수 있도록 신뢰도를 향상해야 한다 ** 신뢰도: 시스템이 주어진 문제를 정확하게 푸는지를 의미 OS는 하드웨어와 소프트웨어를 이어주는 계층으로써 한정된 자원 안에서 정확하고 빠르게 주어진 문제를 해결하는 것이 목적 -> OS 성능을..
1. 운영체제 - 운영체제란?
·
CS
운영체제(OS, Operating System) 1. 하드웨어 위에 설치되어 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층 2. 컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행한다 3. 컴퓨터 자원은 제한적(cpu, 메모리 등)이기 때문에 자원 관리는 매우 중요함 4. 사용자 컴퓨터 간의 인터페이스를 제공해 편리하게 사용할 수 있는 환경을 제공 5. 윈도우, 맥 , 리눅스, 유닉스 등이 있다