IT237 운영체제 #4 스레드(Thread)의 개념스레드는 CPU 사용의 기본 단위이며, 실행 컨텍스트(프로그램 카운터, 레지스터 집합, 스택)를 가진다.동일한 프로세스에 속한 스레드들은 코드 영역, 데이터 영역, 열린 파일 등 대부분의 자원을 공유한다. 다중 스레드(Multithreading)의 장점응답성(Responsiveness)하나의 스레드가 블로킹되더라도 다른 스레드가 계속 실행되어 사용자 응답성을 유지할 수 있다.자원 공유(Resource Sharing)스레드 간 데이터 공유가 용이하며, 같은 프로세스 자원을 공유하므로 통신 비용이 적다.경제성(Economy)프로세스 생성보다 스레드 생성/전환이 비용이 적게 든다. (문맥 교환 시 공유 메모리 사용 가능)확장성(Scalability)멀티코어 시스템에서 병렬 실행을 통.. 2025. 8. 17. 운영체제 #3 프로세스 개념프로세스(Process): 실행 중인 프로그램을 의미하며, 현재 활동 상태는 프로그램 카운터(PC)와 다른 CPU 레지스터 값으로 표현된다.메모리 레이아웃: 프로세스는 메모리에서 일반적으로 다음 4가지 영역으로 구성된다.텍스트(Text): 실행 코드(명령어) 저장데이터(Data): 전역 변수, static 변수 저장힙(Heap): 동적 메모리 할당 영역스택(Stack): 함수 호출 정보, 지역 변수 저장프로그램 카운터 정의CPU가 다음에 실행할 명령어의 메모리 주소를 저장하는 레지스터역할- 프로세스 실행 중 다음 명령어를 어디서 읽어야 할지 CPU에게 알려줌- 문맥 교환 시, 현재 실행 중인 명령어의 위치를 저장해 두었다가, 나중에 이어서 실행할 수 있도록 함예시어떤 프로세스가 1000번지 .. 2025. 8. 16. 운영체제 #2 시스템 콜(System Call)정의: 응용 프로그램이 OS가 제공하는 서비스를 이용하기 위한 프로그래밍 인터페이스사용 방법: API를 통해 접근 (예: C 표준 라이브러리는 Unix/Linux 시스템 콜 인터페이스 제공)6대 기능 범주프로세스 제어(Process Control)파일 관리(File Management)장치 관리(Device Management)정보 유지 관리(Information Maintenance)통신(Communication)보호(Protection) 링커컴파일된 여러 개의 오브젝트 파일과 라이버리를 하나로 묶어 실행 파일을 만든다.심볼 결합 (Symbol Resolution)여러 소스 파일에서 정의 및 참조된 함수와 변수를 서로 연결예: main.c에서 print() 함수를 호출하.. 2025. 8. 15. JSON.parse(JSON.stringify(obj)) 의미 개발하다 보면 아래와 같은 코드들이 보인다.const tmp: Channel[] = JSON.parse(JSON.stringify(channels)) 이 의미를 알 지 못한다면, 왜 불필요한 작업을 진행하는지 이해 할 수 없다.stringify와 parse는 연산 속도도 느린데... 이 패턴은 객체를 깊은 복사를 하기 위해 사용하는 방법이 과정을 거치면 원본 객체의 참조와 완전히 끊어진 새로운 객체가 만들어 진다. 얕은 복사(shallow copy)const copy = [...array] 나 const copy = {...obj} 처럼 spread나 Object.assigin을 쓰면 1단계 깊이까지 복사되고, 그 안에 있는 개체나 배열은 여전히 원본과 같은 참조를 가진다.const a = [{x: 1}.. 2025. 8. 15. 운영체제 #1 1. 운영체제의 개념과 역할운영체제(OS)는 하드웨어와 응용 프로그램 사이에서 자원(Resource) 관리자 역할을 한다.주요 자원:CPU (연산 자원)메모리 (휘발성 저장 자원)저장장치 (비휘발성 저장 자원)I/O 장치 (네트워크 카드, 디스크 컨트롤러, USB 등)개발자 관점에서 운영체제는 크게 두 층으로 나눌 수 있다.커널(Kernel): 하드웨어 직접 제어, 자원 관리 로직 포함 (리눅스: kernel/, 윈도우: NT Kernel)유저 공간(User Space): 응용 프로그램, 라이브러리, 셸 등이 실행되는 영역 2. 인터럽트와 커널 진입하드웨어는 CPU와 직접 대화할 수 없고, 대신 인터럽트(Interrupt) 라는 비동기 신호를 통해 이벤트를 알린다.예시: 네트워크 패킷 수신NIC(Netw.. 2025. 8. 14. [typescript] generic extends 문법 type HandleData = { storageType: StorageType keys: readonly K[]} 위의 코드를 보고 generic을 어떻게 이해 해야할지 알아보았다. Generic 타입 파라미터 K를 선언이고, 두가지 조건을 동시에 설정 1. K extneds stringK는 문자열 타입이어야 한다.즉, K는 'foo' | 'bar' 같은 문자열 리터럴 타입이 될 수 있고 그냥 string일 수 있다.2. = string (기본 타입 설정)generic에 아무 값도 안 넣으면, K는 자동으로 string 타입이 된다.즉, HandleData를 쓸 때 K를 명시하지 않으면 keys는 readonly string[]이 됨정리K는 문자열 계열 타입이어야 하고, 지정하지 않으면 string.. 2025. 8. 14. 이전 1 2 3 4 5 ··· 40 다음