전체 글
-
[컴퓨터 밑바닥의 비밀] 2.2 스레드 간 공유되는 프로세스 리소스Study/컴퓨터 밑바닥의 비밀 2025. 3. 1. 21:35
2.2.1 스레드 전용 리소스상태 변화 관점에서 보면 스레드는 '함수 실행'임함수 실행에는 항상 하나의 시작점이 존재하고, 이 시작점이 진입 함수임CPU는 하나의 진입 함수의 명령어를 실행하여 실행 흐름인 스레드를 생성함 Q. 함수 실행에는 어떤 종류의 정보가 존재할까?함수의 실행 시간 정보는 스택 영역을 구성하는 스택 프레임에 저장됨스택 프레임에는 함수의 반환값, 다른 함수를 호출할 때 전달되는 매개변수, 함수 내에서 사용되는 지역 변수, 레지스터 정보가 저장됨각 스레드는 자신만 사용할 수 있는 스택 영역을 가짐 Q. 스레드 전용 리소스는 어떤 것일까?스레드에 속한 스택 영역, PC 레지스터(프로그램 카운터), 스택 포인터, 함수 실행 시 사용되는 레지스터 정보가 모두 스레드 전용PC 레지스터 : 다음..
-
[컴퓨터 밑바닥의 비밀] 2.1 운영체제, 프로세스, 스레드Study/컴퓨터 밑바닥의 비밀 2025. 3. 1. 18:21
2.1.1 모든 것은 CPU에서 시작된다CPU는 스레드, 프로세스, 운영체제 같은 개념을 알지 못함CPU는 단지 다음 두 가지 상항만 알고 있음메모리에서 명령어를 하나 가져온다.(dispatch)이 명령어를 실행한 후 다시 1로 돌아간다. Q. CPU는 어떤 기준으로 메모리에서 명령어를 가져올까?PC(program counter) 레지스터에 저장된 명령어 주소를 사용해 가져온다.레지스터는 용량은 매우 작지만 속도는 빠른 일종의 메모리PC 레지스터에 저장되는 것은 CPU가 다음에 실행할 명령어의 주소이다. Q. PC 레지스터의 명령어 주소는 누가 설정할까?PC 레지스터가 저장하는 주소는 기본적으로 1씩 자동 증가한다.대부분 CPU가 주소를 하나씩 증가시키면서 차례대로 명령어를 실행하기 때문if else 또..
-
[컴퓨터 밑바닥의 비밀] 2.6 동기와 비동기Study/컴퓨터 밑바닥의 비밀 2025. 3. 1. 02:42
1. 동기 호출동기 방식의 함수 호출funcA(){ // funcB 함수가 완료될 때까지 기다린다. funcB(); ...}funcA 함수가 funcB 함수를 호출하면, funcB 함수 실행이 완료될 때까지 funcA 함수의 나머지 코드는 실행되지 않음즉, funcA 함수는 반드시 funcB 함수 실행이 완료될 때까지 기다려야 함 특징순차적으로 진행되기 때문에 직관적이어서 이해하기 쉬움일부 상황(I/O 작업 포함된 경우)에서 호출자가 요청한 작업이 끝날 때까지 기다려야 하기 때문에 효율이 높지 않음 Q. 동기 호출될 때 입출력 작업이 포함되어 있으면 어떻게 동작하는가?예시) 입출력 작업을 할 때 다음과 같이 read 함수를 호출하여 파일을 읽는 상황...read(file, buf)..
-
[array] merge sorted arrayAlgorithm/LeetCode 2025. 2. 22. 15:39
✅ Problemhttps://leetcode.com/problems/merge-sorted-array/description/ ✅ Approach & Solution공통 : 투 포인터 사용 방식1) 작은 원소부터 넣기 (추가 공간 사용)더보기정답값을 담을 추가 배열(result)을 선언해 작은 원소부터 넣음문제 조건에서 nums1 배열에 값을 담으라고 했으므로 추가 배열(result)에 저장된 값들을 nums1 배열로 옮김nums1 배열은 m + n 개의 원소를 담을 수 있음class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int[] result = new int[m + n]; int p..