Chapter 12. 프로세스 동기화 목표 - 동기화란 무엇인지 알아본다. - 공유 자원과 임계 구역 문제를 이해한다. - 임계 구역 문제를 해결하기 위한 동기화 기법들을 학습한다. 01. 동기화란 1. 돟기화해야하는 이유 - 프로세스들은 동시다발적으로 실행되기 때문에, 실행 순서와 자원의 일관성을 보장해야 함 2. 프로세스 동기화 - 프로세스들 사이 수행시기를 맞추는 것 - 실행 순서 제어 : 프로세스를 올바른 순서대로 실행 ex. 특정 조건이 만족되어야만 실행을 이어나갈 수 있도록 하는 등 - 상호 배제 : 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근 ex. 통장에 입금 시, 잔액에 동시에 한 프로세스만 접근 가능하도록 함 3. 생산자와 소비자 문제 - 생산자와 소비자가 있고 둘 다 총합에..
함수 타입 함수를 설명하는 가장 좋은 방법 어떤 매개변수를 받고, 어떤 결과값을 반환하는지 이야기하는 것 타입스크립트의 함수를 설명하는 가장 좋은 방법 어떤 타입의 매개변수를 받고, 어떤 타입의 결과값을 반환하는지 이야기하는 것 function func(a: number, b: number) { return a + b; } 화살표 함수의 타입을 정의하는 방법 함수의 선언식과 동일한 방식 const add = (a: number, b: number) => a + b; 함수의 매개변수 function introduce(name = "이정환") { // 기본값 기준으로 타입 추리(string) console.log(`name: ${name}`) } 이때 주의할 부분 매개변수로 다른 타입을 넘겨주는 경우 오류 ..
Chapter 10. 프로세스와 스레드 목표 - 프로세스 제어 블록이란 무엇인지 이해한다. - 문맥 교환의 정의와 과정을 학습한다. - 프로세스는 메모리에 어떻게 배치되는지 학습한다. - 프로세스 상태와 프로세스 계층 구조를 학습한다. - 스레드의 개념을 이해하고, 멀티 프로세스와 멀티 스레드의 차이를 이해한다. 01. 프로세스 개요 1. 프로세스 - 실행 중인 프로그램 - 프로세스 생성 : 보조기억 장치에 저장된 프로그램을 메모리에 적재하고 실행 2. 포그라운드 프로세스 foreground process - 사용자가 볼 수 있는 공간에서 실행되는 프로세스 ex. 메모장, 크롬 등 3. 백그라운드 프로세스 background process - 사용자가 볼 수 없던 공간에서 실행되는 프로세스 - 종류 - ..
Chapter 8. 입출력 장치 목표 - 장치 컨트롤러에 대해 이해한다. - 장치 드라이버에 대해 이해한다. - 프로그램 입출력 방식이 무엇인지 이해한다. - 인터럽트 기반의 입출력 방식을 이해한다. - DMA 입출력 방식을 이해한다. 01. 장치 컨트롤러 1. 장치 컨트롤러의 필요성 - 입출력장치의 종류는 매우 다양함 - 입출력장치의 데이터 전송률*은 CPU와 메모리에 비해 낮음 *전송률 : 데이터를 얼마나 빨리 교환할 수 있는 지에 대한 지표 2. 장치 컨트롤러란? = 입출력 제어기 I/O contoller = 입출력 모듈 I/O module - 컴퓨터와 입출력장치를 연결하는 하드웨어 3. 장치 컨트롤러의 역할 - CPU와 입출력장치 간의 통신 중개 ex. 번역가 역할 - 오류 검출 - 데이터 버퍼링..
문법만 외워서는 제대로 쓸 수 없으니 타입스크립트의 원리부터 이해하자! 어떤 기준으로 타입을 정의하는지 어떤 기준으로 타입간의 관계를 정의하는지 어떤 기준으로 타입의 오류를 검사하는지 타입은 집합이다 타입 동일한 속성과 특징들을 갖는 여러값들을 모아둔 집합 number Literal Type = number Type의 부분집합 - nuber Literal Type : 서브타입, 자식타입 - number Type : 슈퍼타입, 부모타입 타입 호환성 어떤 타입을 다른 타입으로 취급해도 괜찮은지 판단하는 것 number Literal Type -> number Type : 호환됨(ex. 정사각형 -> 직사각형) number Literal Type Dog 초과 프로퍼티 검사 객체 타입 변수를 초기화할때 객체 l..
타입의 종류에 대해 알아보는 시간 기본타입 JavaScript와 유사 원시타입 Primitive Type - 하나의 값만 저장하는 타입 //number let num1 : number = 123; // :(콜론)으로 타입 정의하는 방식 = 타입 주석 let num2 : number = -123; let num3 : number = 0.123; let num4 : number = -0.123; let num5 : number = Infinity; let num6 : number = -Infinity; let num7 : number = NaN; // string let str1 : string = "hello"; let str2 : string = 'hello'; let str3 : string = `he..
초반부 간단한 이론 정리! 타입스크립트란 1. C# 개발자가 개발하여 유사한 부분이 많음 2. 인기가 많음(점점 더 많아지는 중) 3. 타입스크립트 = 자바스크립트의 확장판 - 자바스크립트를 더 안전하게 사용할 수 있도록 확장함 - 자바스크립트에 타입을 정의하는 문법만 추가하면 타입스크립트가 됨 4. 배워야하는 이유 : 간단한 기능을 위해 개발된 유연한(버그 가능성이 높은) 자바스크립트에 node.js(자바스크립트 구동기)가 더해져 자바스크립트로 다양한 구현이 가능해짐. 따라서 복잡한 프로그램을 만들 때 버그 가능성을 낮추기 위해(안전하게 사용하기 위해) 타입스크립트가 필요 자바스크립트의 한계점 타입 시스템 : 언어의 타입 관련된 문법 체계 - 정적 타입 시스템 : 코드 실행 전 변수의 타입 고정적으로 ..
Chapter 6. 메모리와 캐시 메모리 목표 - RAM의 특징과 종류에 대해 학습한다. - 논리 주소와 물리 주소의 차이를 이해한다. - 논리 주소를 물리 주소로 변환하는 방법을 이해한다. - 캐시 메모리와 저장 장치 계층 구조의 개념을 이해한다. 01. RAM의 특징과 종류 1. RAM(메모리) - 실행할 프로그램의 명령어와 데이터를 저장 - 휘발성 저장 장치 : 전원을 끄면 RAM에 저장된 명령어와 데이터는 모두 날아감 비휘발성 저장 장치 ex. SSD, 하드 디스크, USB 등 - CPU가 실행하고 싶은 프로그램이 보조 기억장치에 있을 때, RAM으로 복사하여 저장 후, 실행함 - 램의 용량이 크면 많은 프로그램들을 동시에 실행하는 데에 유리. 단, 용량이 필요 이상으로 커지면 속도가 비례하진 않..