TIL 68

5. Scheduling (FCFS, SJF, RR, Priority Scheduling)

일반적으로, Single processor 시스템에서는 오직 하나의 프로세스만 실행 가능합니다. 즉, CPU에서 실행되고 있는 프로세스가 완전히 종료(terminated) 될 때까지 Ready queue에 있는 타 프로세스는 실행할 수 없다는 것입니다. 만약 위 상황에서, IO Request 등 기존 프로세스 실행을 잠시 멈춰야 할 때에는 Ready queue에 있는 타 프로세스는 기존 프로세스가 종료되지 않았으므로 실행 불가합니다. (becomes idle) 따라서, OS는 CPU는 보다 효율적으로 사용하기 위해 Ready queue에 있는 프로세스 중 하나를 선택한 뒤, 그 프로세스를 실행시키는데 이를 CPU Scheduling이라 하고, Ready queue 중 다음으로 실행할 프로세스를 고르는 과..

TIL/OS 2023.08.10

4. Thread

Thread : CPU에서 업무를 수행하는 가장 작은 단위 우리는 지금까지 스레드 없이 프로세스에 대해서만 설명을 이어나갔습니다. 프로세스에게는 Code, Data, Stack으로 이루어진 PCB가 있고, fork()를 이용해 같은 내용의 PCB를 가지는 자식 프로세스를 만들고, exec()를 이용해 PCB의 내용을 바꾸어갔습니다. 하지만, 프로세스를 사용하면서 개발자들은 "프로세스는 비용을 많이 잡아먹는다!" 라고 느끼게 됩니다. 그 이유는 만약 같은 일을 하는 프로세스를 여러 개 열어야 하는 경우, 그 만큼의 PCB가 필요하고, 이는 메인 메모리 공간의 낭비로 이어집니다. 그리고 이를 위해서는 큰 용량을 가진 PCB의 복제가 필요하고, 이는 시간의 낭비로도 이어지게 됩니다. 그렇기 때문에, 개발자들은..

TIL/OS 2023.07.25

3. Process

Process 현재 메모리에 있거나 CPU에서 실행 중인 프로그램 - 즉, HDD나 SSD에 있는 프로그램은 프로세스라 부를 수 없음 Memory Address Space 프로세스는 각각 자신의 데이터(코드, 변수, 인자 등)을 저장하기 위한 address space를 가지고 있음 Text(code) : 프로세스의 코드 저장 Data : 정적 데이터 저장(전역변수 등) - 위 예시에서는 전역변수인 x, y 해당 Stack : local data 저장(local variable, function parameter, return address, ...) - 위 예시에서는 int * values, int i 해당 Heap : c language의 malloc, JAVA / JS의 object 등 저장됨 OS ..

TIL/OS 2023.05.05

Collection - List(2) Sorting

1) Comparable interface 이용 (Collections.sort(list)) - list의 generic 클래스에 Override된 comparable interface의 compareTo(o T)를 이용해 정렬 - Collections.sort() 메소드를 이용하기 위해서는 클래스가 compareTo(o T)를 오버라이드해야 - Integer, String 등 클래스는 이미 comparable interface를 implement받고 있음 public class Student implements Comparable { private String name; private int num; public Student(String name, int num) { this.name = name; ..

TIL/Java 2023.04.01

Encapsulation in Java

- 사용자가 직접 객체의 property 값 접근 불가하도록, 오직 메소드 통해서만 가능 - private 사용을 통해 접근 불가하도록(객체의 property는 오직 class 내부에서만 접근 가능) - private int speed - setter(object의 property 값 할당) void setSpeed(int speed) this.speed = speed; - getter(object property 값 가져오기 위해 사용, private로 선언할 경우, main class에서 name.speed로 접근 불가능) - int getSpeed(){ return this.speed; } - cf> source - make getter and setter 통해서도 만들 수 있음 - 캡슐화 이점 -..

TIL/Java 2023.02.01

JVM vs JRE vs JDK

JVM(Java Virtual Machine) - 컴파일된 바이트코드를 명령어로 번역(운영체제에 따라 종류가 다름) JRE(Java Runtime Environment, Java 실행 환경) - JVM + Libraries + Packages Classes(util, math, lang, ...) - Java 프로그램 실행을 위해서는 JRE 필요 JDK(Java Development Kit, Java 개발 도구) - JRE + Compilers + Debuggers - Java 프로그램 실행(JRE), 컴파일, 디버깅 - Java 프로그래밍 개발을 위해서는 JDK 필요

TIL/Java 2023.01.19

Fragment, Portal, useRef

1. Fragment - 무의미한 div를 방지(렌더링 속도 증가 및 보다 semantic하게 작성) - ... 이나, ..., 또는 import {Fragment} from 'react' ...로 대체 가능 - ex) const Modal = () =>{ ... return ( ... // 컴포넌트 내부 내용 작성 ) 2. Portal - react 내부 jsx 코드가 html 렌더링될 때, react 위치와 다른 곳에 렌더링되게 함 -> 보다 semantic하게 작성 가능! - ex) -> // modal modal! // 주 내용 ... ... - 사용법 - A. import ReactDom from "react-dom" 입력 (portal 관련 메소드가 react-dom 에 존재) - B. pub..

TIL/React 2023.01.18

7. Object.create()

Object.create 사용법 - Object.create(연결시킬 객체의 프로토타입) - ex) const PersonProto = { calcAge(){ console.log(2037 - this.birthYear) } } const p1 = Object.create(PersonProto); - PersonProto와 p1이 prototypal inheritance로서 연결되어 있음 - 이 때, p1은 현재 빈 객체 cf> new Person() vs Object.create() 1) 연결시킬 prototype를 정할 수 있음 const p1 = new Person()의 경우에 p1은 Person의 프로토타입과 자동으로 연결되지만, Object.create는 연결시킬 프로토타입 객체를 정할 수 있음

TIL/JavaScript 2023.01.02

6. Static Method

static method - 프로토타입에 정의된 것이 아닌, constructor에 정의된 method - 따라서, static method는 instance가 사용 불가함, inherit되지 않음 - ex) Array.from은 Array.from(...) 은 사용할 수 있지만, [1,2,3,4,5].from(...) 은 사용 불가 - ex2) Number.parseInt(12.3)은 되지만, 12.parseInt(...)은 사용 불가 - 사용법 - class Person{ constructor(age){ this.age = age; } printAge(){ // instance method : prototype에 추가돼 instance가 사용 가능 console.log(this.age) } stati..

TIL/JavaScript 2023.01.02

5. Getter & Setter

get - method 앞에 'get' 입력 - ex) get latest(){ return this.movements.slice(-1).pop(); } console.log(account.latest) // account 배열의 마지막 요소 return set - 사용 방법은 get과 같음 - set latest(mov){ // set은 인자 1개 필요 this.movements.push(mov); } - account.latest = 50 // property처럼 사용 - console.log(account.movements) // [... ,50] setter - property에 값을 할당하려고 할 때 실행되는 method - ex) constructor(age) this.age = age; se..

TIL/JavaScript 2023.01.02