반응형 CS(Computer Science)/운영체제26 [운영체제] CPU 프로세스 관리 CPU는 여러 종류의 job을 섞어서 하기 때문에 CPU 스케줄링이 필요하다. 스케줄링의 목적은 Interactive job이 너무 오래 기다리지 않게 하고 CPU와 입출력 장치 같은 자원을 효율적으로 사용하는 것이다. I/O bound process: cpu는 짧게 쓰는데 빈도가 잦다 CPU bound process: cpu만 오랫동안 쓴다 운영체제 기능 cpu 스케줄러: ready 상태의 프로세스 중에서 이번에 cpu를 줄 프로세스를 고른다 dispatcher: cpu를 스케줄러에 의해 선택된 프로세스에게 넘기는 역할 nonpreemptive: 강제로 빼앗지 않고 자진 반납 preemptive: 강제로 빼앗음 ※ 앞으로 자주 보게 될 개념 자료출처 ABRAHAM SILBERSCHATZ ET AL., .. 2023. 1. 29. [운영체제] 프로세스 시스템 콜 종류 & 프로세스 협력 프로세스의 생성과 종료의 시스템 콜 종류들 fork() 시스템 콜과 exec() 시스템 콜을 C로 구현한 코드이다 int main() { int pid; pid=fork(); if (pid==0) printf("I am child"); execlp("/bin/date","/bin/date",(char *) 0); else if (pid>0) printf("I am parent"); } fork() 시스템 콜로 복제를 할 때는 결괏값을 달리해 부모 프로세스와 자식 프로세스를 구분한다. 부모는 리턴 값이 양수이고 자식은 0이다. 중간에 exec() 시스템 콜을 통해 다른 프로그램을 실행시켜 다른 프로세스처럼 역할을 할 수 있다. wait() 시스템 콜 프로세스A가 wait() 시스템 콜을 호출하면 자식 프로.. 2023. 1. 29. [운영체제] 프로세스 생성과 종료 프로세스 생성 부모 프로세스가 자식 프로세스를 생성할때 운영체제에게 요청해 프로세스의 트리 구조가 형성된다. 프로세스가 실행 되기 위해서는 자원이 필요한데 이 자원은 운영체제로부터 받고 부모와 공유한다. 보통은 자원을 공유하지 않는다. 부모와 자식이 공존하는 모델과 자식이 종료될 때까지 부모가 기다리는 모델이 있다 프로세스를 생성하는 방법은 복제생성이다. 먼저 부모 프로세스의 주소 공간, 운영체제의 pcb와 자원을 똑같이 복사한다. 복제 생성을 하게 되면 같은 일만 하게 되는데 여기서 일단 복제를 하고 새로운 프로그램을 올리는 식이다. 두 가지 단계로 나눠지는데 fork 시스템 콜로 새로운 프로그램 생성한다. 다음 단계로 exec 시스템 콜을 통해 새로운 프로그램을 메모리에 올리는 것이다. 프로세스 종료.. 2023. 1. 29. [운영체제] 스레드 Thread란? 프로세스 내부의 cpu 수행 단위가 여러개인 경우 한 단위 프로세스가 하나 주어지면 주소공간이 프로세스별로 생성이 된다. 이를 관리하기 위해서 운영체제 내부의 pcb를 두고 있다. 이때 메모리를 효율적으로 사용하기 위해 스레드를 사용하면 프로그램 카운터만 여러개두고 나머지는 공유해 공간을 아낄수 있다. - Thread 구성: program counter + register set + stack space - 스레드가 동료 스레드와 공유하는 부분: code section + data section + OS resources 프로세스안에 여러개의 쓰레드를 두는게 더 가볍다 다중 스레드 장점 하나의 서버 스레드가 blocked 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행되어 빠른 처.. 2023. 1. 27. [운영체제] 프로세스 프로세스의 문맥 1. cpu 수행 상태를 나타내는 하드웨어 문맥 2. 프로세스의 주소 공간 - code, data, stack 3. 프로세스 관련 커널 자료 구조 - pcb - kernel stack ※ 커널스택을 프로세스별로 별도로 두고 있다. PCB(Process Control Block): 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보 (1) os가 관리상 사용하는 정보 (2) cpu 수행 관련 하드웨어 값 (3) 메모리 관련 (4) 파일 관련 프로세스 상태 1. Running: cpu 잡고 instruction 수행 중인 상태 2. Ready: cpu 기다리는 상태 3. Blocked: cpu 주어도 당장 instruction을 수행할 수 없는 상태 - process 자신이 요청.. 2023. 1. 26. [운영체제] 입출력 & 프로그램의 실행 동기식 입출력: 입출력 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 ● 구현방법 1: cpu 가지고 있으면서 기다리기 - 입출력 끝날 때까지 cpu 낭비시킴 - 매시점 하나의 입출력만 일어날 수 있음 ● 구현 방법 2: cpu 다른 프로세스한테 넘겨주기 - 입출력이 완료될 때까지 해당 프로그램에게서 cpu를 빼앗음 - 입출력 처리를 기다리는 줄에 그 프로그램을 줄 세움 - 다른 프로그램에게 cpu를 줌 비동기식 입출력: 입출력이 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감 정리 프로세스가 입출력동안에 인스터럭션 실행 안하고 기다리면 동기이고 입출력을 요청하고 입출력 이전에 인스터럭션 바로 실행하면 비동기다 저장장치 계층 구조 ● 위로갈수록.. 2023. 1. 26. [운영체제] 시스템 구조 시스템 구조 CPU: - CPU스케줄링: CPU 큐에 기다리고있을때 어떤 프로그램에게 CPU 사용권을 줄까 - 작업할때 필요한 용량 메모리에 올려놓고 사용 - 메모리에서 인스터럭션 읽어서 실행 - cpu안에 register, mode bit(v프로그램 구분) 존재 ※ mode bit: 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록하기위한 보호장치 - 0 모니터모드: 커널모드 운영체제 수행 - 1 사용자모드: 사용자 프로그램 수행 - 중요한 명령은 모니터모드에서만 가능 - 인터럽트 발생시 하드웨어가 모드빗 0으로 바꿈 - 사용자 프로그램에 cpu넘기기전에 모드빗 1로 셋팅 - 제한된 지시만 실행가능 메모리: cpu 작업공간, cpu만 접근 가능 - 한정된 메모리를 어떻게.. 2023. 1. 26. [운영체제] 운영체제 기초 운영체제: 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층, 하드웨어를 관리 목적 1. 컴퓨터 자원 효율적으로 관리 (1) 주어진 자원 최대한의 성능을 내도록 ->효율성 (2) 특정 사용자/프로그램의 지나친 불이익이 발생하지 않도록 ->형평성 2. 편리하게 사용할 수 있는 환경을 제공 분류 1. 단일 작업: 한 번에 하나의 작업만 처리 2. 다중작업(multi tasking): 동시의 두 개 이상의 작업 처리 3. 실시간: 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 os, 데드라인 o 처리방식 1. 일괄처리(batch processing): 작업 요청을 일정량 모아서 한꺼번에 처리, 작업 종료될 때까지 기다려야함 2. 시분할: 여러 작업을 수행할 때 컴퓨터 처.. 2023. 1. 25. 이전 1 2 3 다음 728x90