CPU 스케줄링 CPU란? → CPU는 프로그램의 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙처리장치임. 프로그램이 시작되어 메모리에 올라가면 프로그램 카운터 레지스터가 현재 CPU에서 수행할 코드의 메모리 주소값을 가지고 있음. CPU는 프로그램 카운터가 가리키는 주소의 기계어 명령을 하나씩 수행. CPU는 일반적으로 한 시스템 내의 하나씩 밖에 없음 → 여러 프로그램이 동시에 수행되는 시분할 환경에서 매우 효율적으로 관리되어야함. 프로그램 실행과 관련된 기계여 명령어 CPU 내에서 수행되는 기계어 명령. 메모리 접근을 필요로 하는 기계어 명령. 입출력을 동반하는 기계어 명령. CPU 내에서 수행되는 명령 → Add 명령. → 일반 명령임. CPU 내의 레지스터에 있는 두 값을 더해 레지스터에 저정..
OS
1. 프로세스의 개념 → 프로세스(process)란 실행 중인 프로그램(program in execution)을 뜻함. 디스크에 실행 파일 형태로 존재한 프로그램 → 메모리에 올라가서 실행 시작 → 생명력을 갖는 프로세스가 됨. → 프로세스 CPU 획득 자신의 코드 수행, CPU를 반환하거나 입출력 작업 수행. → 자신의 임무를 다 수행하고 나면 종료 되고 사라짐. 잡(job) == 프로세스 프로세스 이해하기 → 프로세스의 문맥(context)에 대해 알 필요가 있음. 프로세스 문맥이란? → 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보를 의미 프로세스 시작, 종료할 때까지 CPU에서 명령을 한꺼번에 수행하면 좋겠지만 → 여러 프로세스가 함께 수행되는 시분할 시스템 환경..
1. 프로그램의 구조와 인터럽트 컴퓨터 프로그램은 어떠한 프로그래밍 언어로 작성 되었던 그 내부 구조는 함수들로 구성됨. 프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 함. 주소 영역 코드 프로그램의 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령(machine instruction) 형태로 변환 되어 저장 데이터 전역 변수 등 프로그램이 사용하는 데이터를 저장 스택 함수가 호출 될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 데에 사용되는 공간. 프로그램 실행 프로그램 따로 CPU 따로 프로그램 메인 함수 → 다른 함수 호출(CPU 메인함수의 코드를 수행하다가 다른 함수의 코드로 수행 위치 이동) 프로그램 새로..
규칙 한 명 이상의 철학자가 둥근 테이블에 앉아 다음과 같은 세 행동 중 하나를 취한다. 먹기, 생각하기, 잠자기 철학자가 밥을 먹는 도중 → 생각, 잠 x 철학자가 잠자는 도중 → 밥, 생각 x 철학자가 생각하는 도중 → 밥, 잠 x 철학자들은 둥근 테이블에 앉아있으며, 가운데에는 아주 큰 스파게티 그릇이 놓여있다. 탁자 위에는 몇 개의 포크가 올려져있다. 포크의 개수는 철학자의 수와 같다. 철학자는 오른손에는 오른쪽 포크를, 왼손에는 왼쪽 포크를 들고 먹는다. 철학자가 먹기 끝남 → 포크를 탁자 위에 올려놓고 자기 시작. 자는 거 끝남 → 생각하기를 다시 시작 시뮬레이션은 철학자가 굶어 죽을 때까지 계속됨. 철학자들은 서로 대화하지 않는다. 철학자들은 다른 철학자가 죽을 것인지에 대해 알지 못 한다...