Study 21

[운영체제] Process Synchronization 1, 2

Initial Attempts to Solve Problem 두 개의 프로세스가 있다고 가정 P0, P1 프로세스들의 일반적인 구조 프로세스들은 수행의 동기화(synchronize)를 위해 몇몇 변수를 공유할 수 있다 → synchronization variable 프로그램적 해결법의 충족 조건 Mutual Exclusion (상호 배제) 프로세스 Pi가 critical section 부분을 수행 중이면 다른 모든 프로세스들은 그들의 critical section에 들어가면 안 된다 Progress (진행) 아무도 critical section에 있지 않은 상태에서 critical section에 들어가고자 하는 프로세스가 있으면 critical section에 들어가게 해주어야 한다 Bounded Wa..

Study/CS 2023.05.24

[운영체제] CPU Scheduling

Scheduling Criteria CPU utillzation (이용률) Throughput (처리량) Turnaround time (소요시간, 반환시간) Wating time (대기 시간) Response time (응답 시간) SJF (Shortest-Job-First) 각 프로세스의 다음번 CPU burst time을 가지고 스케줄링에 활용 CPU burst time이 가장 짧은 프로세스를 제일 먼저 스케줄 Two schemes : Nonpreemptive 일단 CPU를 잡으면 이번 CPU burst가 완료될 때까지 CPU를 선점 당하지 않음 Preemptive 현재 수행중인 프로세스의 남은 burst time보다 더 짧은 CPU burst time을 가지는 새로운 프로세스가 도착하면 CPU를 빼..

Study/CS 2023.05.22

[운영체제] 프로세스 관리 1, 2

프로세스 생성(Process Creation) 부모 프로세스가 자식 프로세스 생성 프로세스의 트리(계층 구조) 형성 프로세스는 자원을 필요로 함 OS로부터 받는다 부모와 공유한다 자원의 공유 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 수행(Execution) 부모와 자식은 공존하며 수행되는 모델 자식이 종료(terminate) 될 때까지 부모가 기다리는(wait) 모델 주소 공간(Adress space) 자식은 부모의 공간을 복사함(binary and OS data) 자식은 그 공간에 새로운 프로그램을 올림 UNIX ex. fork() 시스템콜이 새로운 프로세스를 생성 부모를 그대로 복사 주소 공간 할당 fork 다음에 이어지는 exec() 시스템콜을 통해 새..

Study/CS 2023.05.17

[운영체제] 프로세스 2, 3

Thread Thread의 구성 program counter register set stack space Thread가 동료 thread와 공유하는 부분(=task) code section data section OS resources 전통적인 개념의 heavyweight process 는 하나의 thread를 가지고 있는 task로 볼 수 있다. 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked (waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행되어 빠른 처리를 할 수 있다. 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다. 스레드를 사용하면 병렬성을 높일 수 있다. Benefits of Threa..

Study/CS 2023.05.15

[운영체제] 프로세스 1

프로세스의 개념 Process is a program in execution 프로세스의 문맥(context) CPU 수행 상태를 나타내는 H/W 문맥 H/W 문맥 Program counter 각종 register 프로세스의 주소 공간 code, data, stack 프로세스 관련 커널 자료 구조 PCB (Process Control Block) Kernel stack 프로세스의 상태 (Process State) 프로세스는 상태가 변경되며 수행된다 Running CPU를 잡고 instruction을 수행중인 상태 Ready CPU를 기다리는 상태 (메모리 등 다른 조건을 모두 만족하고) Blocked (wait, sleep) CPU를 주어도 당장 instruction을 수행할 수 없는 상태 Process ..

Study/CS 2023.05.06

[운영체제] 컴퓨터시스템의 구조 2

동기식 입출력과 비동기식 입출력 동기식 입출력 (synchronous I/O) I/O 요청 후, 입출력 작업이 완료된 후에 제어가 사용자 프로그램에 넘어감 구현 방법 1 I/O가 끝날 때까지 CPU를 낭비시킴 매시점 하나의 I/O만 일어날 수 있음 구현 방법2 I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음 I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움 다른 프로그램에게 CPU를 줌 비동기식 입출력 (asynchronous I/O) I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감 ⇒ 두가지 경우 모두 I/O의 완료는 인터럽트로 알려줌 인터럽트(Interrupt) 현대의 운영체제는 인터럽트에 의해 구동됨 DMA (Direct Memory Acc..

Study/CS 2023.04.30

[운영체제] 컴퓨터시스템의 구조 1

컴퓨터 시스템 H/W 구조 I/O device Input (키보드) / Output(프린트, 모니터) Mode bit 사용자가 프로그램의 잘못된 수행으로 다른 프로그램&운영체제에 피해가 가지 않도록 하기 위한 보호 장치 필요 Mode bit을 통해 H/W적으로 두 가지 모드의 operation 지원 1 사용자 모드 : 사용자 프로그램 수행 0 모니터 모드 : OS 코드 수행 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 특권명령으로 규정 Interrupt나 Exception 발생시 H/W가 mode bit을 0으로 바꿈 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 셋팅 *모니터모드 = 커널모드, 시스템 모드 Timer 타이머 정해진 시간이 흐른 뒤 OS에게 제어권..

Study/CS 2023.04.27

[운영체제] #1 운영체제 개요

운영체제 무엇인가? 운영체제란? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 협의의 OS (커널) OS의 핵심 부분으로 메모리에 상주하는 부분 광의의 OS 커널뿐만 아니라 각종 주변 시스템 유틸리티를 포함한 개념 운영체제의 목적 컴퓨터 시스템의 자원을 효율적으로 관리 프로세서, 기억장치, 입출력 장치 등의 효율적 관리 사용자간의 형평성있는 자원 분배 주어진 자원으로 최대한의 성능을 내도록 사용자 및 운영체제 자신의 보호 프로세스, 파일, 메세지 등을 관리 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 OS는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상(경)을 제공 H/W를 직접 다루는 복잡한 부분을 OS가 대행..

Study/CS 2023.04.27

[자료구조] 스택(Stack) / 큐(Queue)

Stack 이란? data를 순서대로 쌓는 자료구조 임시 데이터를 처리할 수 있는 간결한 도구 임시 데이터를 처리하되 데이터를 처리하는 순서에 특히 중점을 둔다 후입선출 (LIFO : Last In First Out) 가장 마지막에 삽입된 데이터가 가장 먼저 삭제된다. //ex) 1, 2, 3, 4를 스택에 차례대로 넣는다. (push) //Integer형 스택 선언 Stack stack = new Stack(); stack.push(1); stack.push(2); stack.push(3); stack.push(4); //순서대로 1번이 제일 먼저 들어가고 4번이 마지막으로 들어간다. //1 1 Stack의 기타 메서드 stack.size(); //stack의 크기 출력 stack.empty(); //..

Study/JAVA 2023.01.16

[Java] 배열(Array)

5.1.1 배열이란? 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 int score1, score2, score3, score4, score5 ⬇ int[] score = new int[5]; 5.1.2 배열의 선언과 생성 배열의 선언 배열을 다루기 위한 참조변수의 선언 //타입[] 변수이름; int[] score; //타입 변수이름[]; int[] score[]; 배열의 생성 타입[] 변수이름; //배열을 선언(배열을 다루기 위한 참조변수 선언) 변수이름 = new 타입[길이] //배열을 생성(실제 저장공간을 생성) int[] score; //int타입의 배열을 다루기 위한 참조변수 score 선언 score = new int[5]; //int타입의 값 5개를 저장할 수 있는 배열 생성 5.1...

Study/JAVA 2023.01.12