본문 바로가기

전체 글97

Javascript - Operator 암묵적 타입변환(= 타입 강제 변환)개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동변환되는 현상// number + string 연산 경우"1" + 2; // '12'1 + "2"; // '12'// boolean + number 연산 경우1 + true; // 21 + false; // 1// number + null 연산 경우1 + null; // 1// number + undefined 연산 경우1 + undefined; // NaN ( 연산 불가능 )이 외에도 자바스크립트 연산을 하다보면, 예측하지 못하고 넘어갈 수 있는 암묵적 타입변환 케이스가 많다. 동등비교 vs 일치비교동등비교(loose equailty)와 일치비교(strict equality) 연산자는 엄현히 다.. 2025. 1. 4.
운영체제(Operating System) - 스레드 스레드란?프로세스를 구성하는 실행 흐름의 단위하나의 프로세스는 하나 이상의 스레드를 가질 수 있다스레드는 단일 스레드, 멀티 스레드(실행 흐름이 여러 개)로 구분된다  스레드의 구성 요소스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보스레드들은 자원을 공유하면서 실행cf) 요즘 운영체제들은 스레드 단위로 CPU를 할당받는 경우가 많음  멀티 프로세스와 멀티 스레드동일한 작업을 수행하는 단일 프로세스 여러개 실행 vs 하나의 프로세스를 여러 스레드로 실행어떤 차이가 있을까? 프로세스를 fork하면 코드/데이터/힙 영역 등 모든 자원이 복제되어 저장됨저장된 메모리 주소를 제외하면 모든 것이 동일한 프로세스 두 개가 통째로 메모리에 적재 cf) fork 직후 같은 프로.. 2025. 1. 4.
운영체제(Operating System) - 프로세스 프로세스포그라운드 프로세스: 사용자가 볼 수 있는 공간에서 실행되는 프로세스백그라운드 프로세스: 사용자가 볼 수 없는 공간에서 실행되는 프로세스사용자와 직접 상호작용이 가능한 백그라운드 프로세스사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스(데몬, 서비스) 프로세스 제어 블록모든 프로세스는 실행을 위해 CPU가 필요하다.하지만 CPU의 자원은 한정되어 있다 -> 프로세스들은 돌아가며 한정된 시간만큼만 CPU 이용- 자신의 차례에 정해진 시간만큼 CPU 이용- 타이머 인터럽트가 발생하면 차례 양보 빠르게 번갈아가며 수행되는 프로세스들을 관리해야하는데, 이를 위해 사용하는 것이 프로세스 제어 블록(PCB)이다.- 프로세스 관련 정보를 저장하는 자료 구조- 옷 상품에 달린 태그와 같은 정보- 프.. 2025. 1. 3.
운영체제(Operating System) - 커널 운영체제의 심장, 커널운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나운영체제가 제공하는 기능은 다양한데, 가장 핵심적인 서비스를 담당하는 부분을 커널이라고 한다. ex) 운영체제에는 속하는데, 커널에는 속하지 않는 기능: UI(유저 인터페이스) - 사용자와 컴퓨터 간 상호작용 위한 통로일 뿐  이중모드와 시스템 호출일반적인 운영 프로그램은 기본적으로 자원에 직접적으로 접근할 수 없다.운영체제는 오직 자신을 통해서만 접근하도록 하여 자원을 보호-> 자원 접근을 대행하는 일종의 문지기 이중모드: CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식사용자 모드운영체제 서비스를 제공받을 수 없는 실행 모드커널 영역의 코드를 실행할 수 없는 실행 모드자원 접근 불가커널.. 2025. 1. 3.
Javascript - 데이터 타입 원시타입과 객체타입원시타입숫자타입(number): 숫자. 정수와 실수 구분없이 하나의 숫자타입만 존재문자열타입(string): 문자열불리언타입(boolean): 논리적 참, 거짓undefined타입: var키워드로 선언된 변수에 암묵적으로 할당되는 값null타입: 값이 없다는 것을 의도적으로 명시할 때 사용하는 값심벌타입(symbol): ES6에서 추가된 7번째 타입(다른 값과 중복되지 않는 유일무이한 값)객체타입: 원시타입을 제외한 모든 것  Symbol타입주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용심벌은 Symbol 함수를 호출해 생성한다.이 때 생성된 심벌 값은 외부에 노출되지 않는다.또한, 다른 값과 절대 중복되지 않는 유일무이한 값var key = Symbol(.. 2025. 1. 2.
Javascript - 변수 변수란?하나의 값을 저장하기 위해 확보한 메모리 공간 자체 or 그 메모리 공간을 식별하기 위해 붙인 이름 (= 값의 위치를 가리키는 상징적인 이름) // 예제 : 10 + 20 은 30을 result 라는 변수에 대입한 것var result = 10 + 20;여기서 result 는 메모리 공간에 저장된 값을 식별할 수 있는 고유한 이름 = 변수이름변수에 저장된 값(위 예제에서 30) = 변수값변수에 값을 저장하는 행위 = 할당(Assignment, 대입, 저장)변수에 저장된 값을 읽어 들이는 것 = 참조(Reference)[ 💡 Note ]사람이 이해할 수 있는 언어로 명명한 변수 이름을 통해 변수에 저장된 값의 의미를 명확히 할 수 있다.즉, "변수에 저장된 값의 의미를 파악할 수 있는 변수 이름은.. 2025. 1. 2.