CS/OS

· CS/OS
인터럽트 인터럽트(interrupt)는 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것을 말하며, 0으로 숫자를 나누는 산술 연산오류, 프로세스 오류 등으로 발생합니다. 또한 오류뿐만 아니라 키보드, 마우스 등 IO디바이스를 사용할 때의 인터럽트, 우선순위가 높은 프로세스의 발생 등으로 발생 인터럽트의 발생 과정 인터럽트 발생 -> 인터럽트 벡터 -> 인터럽트핸들러 함수 실행 -> 명령어 실행 -> 인터럽트 종료 -> 순차적 명령어 실행 인터럽트의 종류 [하드웨어 인터럽트] IO 디바이스 등 하드웨어에서 발생하는 인터럽트 ex) 마우스 버튼 클릭 시,디스크에서 파일 읽기,쓰기 작업 완료 [소프트웨어 인터럽트] 트랩(trap)이라고도 함. 프로세스 오류, 프로세스의 종료, 시작 등을 기반으로 프로세스..
· CS/OS
[운영체제란?] 운영체제는 컴퓨터 내의 하드웨어와 사용자 및 다른 모든 소프트웨어를 관리시켜주는 하드웨어 바로 윗단에 설치되어 있는 소프트웨어입니다. ex) Windows, Max OS, Linux, Unix, Android, IOS 등 운영체제와 컴퓨터시스템의 구조 [운영체제의 종류] 운영체제는 앞단의 어떤 인터페이스를 두누냐에 따라 GUI와 CUI로 나눌 수 있음 GUI(Graphical User Interface)는 그래픽을 사용하여 컴퓨터와 상호작용하는 인터페이스 ex) windowOS, macOS CUI(Character User Interface)는 사용자가 키보드만을 사용하여 문자를 기반으로 컴퓨터와 상호작용하는 인터페이스 ex) MS-DOS 운영체제의 역할 운영체제의 커널이 담당 커널 ->..
· CS/OS
🔎 운영체제가 메모리 관리를 어떻게 하는지? 1. 운영체제의(OS)의 역할 운영체제의 가장 핵심적인 기능은 자원을 효율적으로 관리하는 것입니다. HW : (OS의 아랫단 => cpu/memory/io장치) SW : (OS의 윗단) 2. 메모리(Memory)란? 컴퓨터에서 정보를 처리하기 위해 일시적으로 정보를 보관하는 기억장치를 말합니다. 메모리는 CPU가 작업을 수행하는 데 있어 필요할 때 직접 엑세스 할 수 있도록 운영 체제, 응용 프로그램 및 기타 정보등을 저장하는 기억장치입니다. 메모리에는 주소가 매겨지고 프로세스는 주소를 통해 메모리에 접근하여 작업을 수행할 수 있습니다. 3. 메모리 주소(Memory address) 1) 논리적인 주소(Logical address) 프로그램마다 가지고 있는 메..
· CS/OS
.🔎 주요 질문 1. Deadlock(교착 상태)가 뭔가요? 발생 조건에 대해 말해보세요 2. 회피 기법인 banker's algorithm이 뭔지 설명해보세요 3. 교착상을 설명하는 식사하는 철학자 문제에 대해 설명해보세요 Deadlock이 무엇인가요? 두 개 이상의 프로세스나 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태 무한히 다음 자원을 기다리게 되는 상태를 말합니다. (결과적으로 아무것도 완료하지 못함) P1과 P2가 자원 2,1을 모두 얻어야 한다고 가정해보자 t1 : P1이 자원2를 얻음 / P2가 자원1을 얻음 t2 : P1은 자원1을 기다림 / P2는 자원2를 기다림 현재 서로 원하는 자원이 상대방에게 할당되어 있어서 두 프로세스는 무한 Wait상태에 빠짐 -> Dead..
· CS/OS
블로그 카테고리 목적 : 🔎 CPU Scheduling의 방법, 특징을 이해하기 위해 복습 : 프로그램 실행시 Cpu burst 와 I/O burst가 번갈아 가면서 실행이 됩니다. 이때, I/O 작업이 별로 없는 경우에는 CPU에서 Instruction을 실행하는 단계인 Cpu burst가 길게 나타납니다. 반대로, I/O 작업이 많은 경우에는 CPU를 연속적으로 쓰는 단계가 짧아지게 되고, I/O burst가 길게 나타나게 되는데 이는 Interrupt가 빈번히 발생하기 때문입니다. (결국 CPU Scheduling은 이런 CPU busrt 시간과 I/O burst 시간을 적절히 조절하기 위해 필요합니다..!) [CPU Schduler] 현재 ready queue에 들어가 있는 프로세스 중에서 어떤 ..
· CS/OS
프로그램이 실행이 되면 어떤 프로그램이든 간에 CPU burst와 I/O burst가 번갈아가며 실행이 됩니다..! 즉 프로그램의 실행은 CPU burst와 I/O burst의 연속입니다 ​ CPU burst, I/O burst가 뭐에요? CPU burst = > CPU명령을 실행하는 것 I/O burst = > I/O를 요청한다음 기다리는 ​ [CPU-burst Time의 분포] I/O bound job : CPU를 짧게 쓰고 I/O작업을 하는 것 (우선적으로 cpu줘보자 효율성!) CPU bound job : CPU만 오래 쓰는 작업 ​ 결론 : 여러 종류의 job(=process)이 섞여 있기 때문에 CPU 스케듈링이 필요 ​ CPU Schduler & Dispatcher CPU Scheduler(..
· CS/OS
목적 : 🔎 프로세스 생성에 대해 이해하기 위해 ​ 프로세스가 생성될 땐 부모 프로세스가 자식 프로세스를 생성합니다. 이 때 부모 프로세스가 직접 생성하는 것이 아니라 System Call을 통해 운영체제에게 요청하여 자식 프로세스를 생성합니다. (생성하는 방법은 복제생성입니다..!) ​ 그럼 복제 생성은 어떻게 될까요? 부모프로세스의 주소공간 내용을 그대로 자식 프로세스의 주소공간으로 복사한다. (Fork) 부모 프로세스와는 다른 자식프로세스의 프로그램을 실행해야할 경우 복제된 주소공간 위에 새로운 프로그램의 주소공간을 덮어씌어 실행한다. (Exec) (1단계 복제 -> 2단계 덮어씌우기) ​프로세스와 관련한 System Call [fork() System Call] 부모 프로세스가 fork를 하면 자..
· CS/OS
목적 : 동기식 - 비동기식 입출력의 구분 / Thread란 무엇인가 ​ ​ [동기식 입출력] I/O 요청 후 입출력 작업이 완료된 후에 제어가 사용자 프로그램에 넘어감 구현 방법 1 I/O가 끝날 때까지 CPU를 낭비시킴 매시점 하나의 I/O만 일어날 수 있음 구현 방법 2 I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음 I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움 다른 프로그램에게 CPU를 줌 [비동기식 입출력] I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감 ​ [Thread 란 lightweight preocess] 프로세스(하나) 내부에 cpu 수행 단위가 여러개가 있는 경우 (프로세스를 별도로 두는 것보다 프로세스 안에 쓰레드를 ..
· CS/OS
프로세스 문맥이란? 프로세스의 현재 상태를 정확하게 규명하기 위해서 필요한 모든 요소들 ​ 1. CPU 수행 상태를 나타내는 HW 문맥 (Program Counter, 각종 register) "프로세스는 CPU를 잡고 매 순간 instruction을 실행합니다. 그래서 현재 시점의 프로세스가 instruction을 어디까지 실행을 했는지를 알기 위해선 register에 어떤 값을 넣고 있었고,Program Counter가 어딜 가리키고 있었는지에 대한 정보가 필요합니다." ​ 2. Memory와 관련된 프로세스의 주소 공간(code,data,stack) code,data,stack에 어떤 내용이 들어있는가? ​ 3. 프로세스 관련 커널 자료 구조 (운영체제) - PCB(Process Control Blo..
· CS/OS
목적 : 컴퓨터 시스템의 동작원리를 이해하기 위해서 ​ ​ ​ [컴퓨터 시스템 구조] 컴퓨터 내부장치 : Cpu + Memory(cpu의 작업공간) 컴퓨터 외부장치 : I/O device 입출력 장치(디스크,키보드,모니터,네트워크 장치) ​ Deivce controller : 각각의 I/O 장치들은 각 장치를 전담하는 작은 CPU가 붙에 있게 되는데 그건 device controller라고 부릅니다. CPU는 device controller에게 데이터를 읽어오라고 일을 시키고, 그럼으로써 CPU는 메모리 작업을 하고 I/O device의 작업은 device controller에게 시켜 일을 분담하게 됩니다. (disk의 내부를 통제하는 것은 cpu의 역할이 아니고 device controller의 역할입..
배준오
'CS/OS' 카테고리의 글 목록