| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 정글
- Mini-React
- 혼자 공부해서 개발까지
- 개발자
- 정렬
- 그리디
- 프로그래머스
- 코딩테스트
- html
- js
- Git
- c언어
- 팀프로젝트
- 백준
- 크래프톤 정글
- 그래프
- frontend
- 해시
- 알고리즘
- 코딩
- 프론트앤드
- HTML기초
- javascript
- DFS
- 프론트엔드
- Python
- CSS
- 알고리즘 기초
- react
- BFS
- Today
- Total
목록Pintos/Threads (3)
민혁이의 IT스토리
CPU는 동시에 여러 스레드가 존재할 때, 어떤 스레드를 먼저 실행할지 결정하는 기준으로 ‘우선순위(priority)를 사용한다.즉, 우선순위가 높은 스레드일수록 더 빨리 CPU를 점유해 실행된다.스레드우선순위(Priority)순서Thread120thread2 실행이 끝나고 실행Thread240 먼저 실행 하지만 여러 스레드가 동시에 같은 자원(파일, 메모리 등)에 접근하려 하면 데이터의 일관성이 깨질 수 있다. 이를 방지하기 위해 사용하는 것이 락(lock)이다. 락은 하나의 자원에는 한 번에 하나의 스레드만 접근할 수 있도록 제어하는 역할을 한다. 정상 결과값int result = 0;thread1: thread2:result += 5; result += ..
스레드의 기본 개념을 공부하고 본격적으로 Pintos(핀토스) 구현에 들어갔다. 그런데… 이게 생각보다 너무 어렵다. 😅특히 함수와 매크로를 이해하는 데만 2~3일이 걸렸다. Pintos는 단순히 코드만 짜는 게 아니라, 운영체제가 “어떻게 스레드를 관리하고, 언제 실행시킬지”를 직접 설계해야 하기 때문이다. 아직 구현은 손도 못 댄 상태에서, 하루 종일 list_elem, thread_block, intr_disable 같은 이름만 들여다보고 있었다. “대체 얘네가 무슨 일을 하는 거지…?”그렇게 며칠을 헤맨 끝에, 드디어 첫 번째 목표였던 Alarm(알람) 기능을 구현하기 시작했다. Alarm운영체제에서 “알람(Alarm)” 기능은 스레드(Thread)가 “일정 시간 동안 잠들었다가 자동으로 깨어..
프로세스와 스레드의 관계프로세스(Process) 는 실행 중인 프로그램의 인스턴스로,각자 독립된 메모리 공간(Code, Data, Stack, Heap)을 갖는다.하지만 프로세스 간 전환은 느리고, 자원 공유가 어렵다. 스레드(Thread) 는 한 프로세스 내부에서 실행 흐름을 여러 개로 나눈 것이다.스레드들은 같은 메모리 공간(코드, 데이터, 힙) 을 공유하지만자신만의 스택(Stack) 과 레지스터(실행 상태) 를 가진다. 👉 즉, 스레드는 “프로세스의 실행 단위” 이며,하나의 프로그램이 동시에 여러 일을 처리할 수 있게 한다. 스레드의 필요성 1. 성능스레드는 메모리 공유 덕분에 프로세스보다 전환이 빠르다.새 스레드를 만드는 비용은 프로세스를 만드는 것보다 훨씬 작다.2. 병렬성 (Parallel..