| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 프로그래머스
- 그리디
- 정렬
- DFS
- 해시
- 개발자
- 알고리즘
- frontend
- 알고리즘 기초
- 코딩테스트
- Mini-React
- 프론트엔드
- 백준
- react
- 팀프로젝트
- js
- c언어
- 그래프
- BFS
- javascript
- 크래프톤 정글
- Git
- HTML기초
- 정글
- 코딩
- CSS
- html
- 혼자 공부해서 개발까지
- Python
- 프론트앤드
- Today
- Total
목록2025/11 (8)
민혁이의 IT스토리
Register 레지스터는 CPU 내부에 있는 아주 빠른 저장소입니다. 하지만 OS 이론 관점에서 볼 때 레지스터의 진정한 역할은 문맥(Context) 저장소 이자 커널과의 메신저입니다. 문맥 교환 (Context Switching)의 핵심CPU는 한 번에 하나의 일만 처리할 수 있습니다. 유저 프로그램 A를 실행하다가 커널이 개입하거나 다른 프로그램 B로 넘어가야 할 때, A가 계산 중이던 값들은 어디로 갈까요?이때 레지스터에 있던 모든 값들은 메모리(커널 스택)에 스냅샷처럼 백업됩니다. 그리고 나중에 다시 A 차례가 오면 백업해 둔 값을 레지스터로 복구합니다.즉, 레지스터 값 그 자체가 프로그램의 현재 실행 상태를 의미합니다.커널과 유저의 메신저 (Messenger)앞서 메모리 섹션에서 유저와 커널은..
운영체제(OS)가 프로세스를 어떻게 실행하는지 이해하려면User Mode와 Kernel Mode 개념은 반드시 짚고 넘어가야 한다.특히 교육용 OS인 Pintos에서는 이 개념이 직접적으로 구현되므로정확히 알고 있어야 시스템 콜, 프로세스 실행, 메모리 구조를 설계할 수 있다. 왜 User Mode와 Kernel Mode를 알아야 하는가? 일반 프로그램은 CPU와 메모리를 마음대로 다룰 수 없다.그렇게 되면 보안/안정성 문제가 즉시 발생하기 때문이다.그래서 OS는 CPU를 두 개의 모드로 나누어 운영한다:User Mode: 일반 프로그램(유저 프로세스)이 실행되는 제한된 환경Kernel Mode: OS 커널이 실행되는 최고 권한 환경이 둘의 전환을 이해하면:Pintos의 시스템 콜 구조프로세스 주소..
웹서버 인증서란? 웹서버 인증서는 웹사이트와 사용자의 통신을 암호화하고,그 서버가 진짜 신뢰할 수 있는 곳인지 증명하는 디지털 신분증이에요. 쉽게 말하면,“이 사이트가 진짜 내가 접속하려는 사이트가 맞고,내 정보가 중간에서 훔쳐지지 않도록 안전하게 보호한다”는 보증서예요. 왜 필요한가?보안: 로그인 정보, 결제 정보 등이 암호화되어 외부에서 볼 수 없어요.신뢰성: 브라우저 주소창에 🔒 자물쇠가 보이면 사용자 신뢰도 상승.SEO 이점: 구글 등 검색엔진이 HTTPS 사이트를 더 선호해요. 발급과 적용 방법 Let’s Encrypt 같은 무료 서비스 이용서버에서 인증서 발급 명령어 실행 (certbot 등)웹서버 설정에 인증서 파일 연결HTTP → HTTPS로 리다이렉션 설정인증서의 기본 종류 종류..
HTTP란 무엇인가?HTTP(HyperText Transfer Protocol)는 웹에서 클라이언트와 서버가 데이터를 주고받는 약속된 규칙이다우리가 브라우저에 주소를 입력하면, 브라우저(클라이언트)가 서버에 “이 페이지 보여줘!”라고 요청(Request)을 보내고,서버는 그에 대한 결과(Response)를 HTML, 이미지, JSON 등의 형태로 돌려준다. 1. 브라우저에서 https://example.com을 입력하면 2. 브라우저는 서버로 이렇게 요청합니다:GET / HTTP/1.1Host: example.com 3. 서버는 응답을 보냅니다HTTP/1.1 200 OKContent-Type: text/html... HTTP의 구조HTTP는 두 가지 메시지 형태로 동작합니다. 요청(Request)클..
스레드의 기본 개념을 공부하고 본격적으로 Pintos(핀토스) 구현에 들어갔다. 그런데… 이게 생각보다 너무 어렵다. 😅특히 함수와 매크로를 이해하는 데만 2~3일이 걸렸다. Pintos는 단순히 코드만 짜는 게 아니라, 운영체제가 “어떻게 스레드를 관리하고, 언제 실행시킬지”를 직접 설계해야 하기 때문이다. 아직 구현은 손도 못 댄 상태에서, 하루 종일 list_elem, thread_block, intr_disable 같은 이름만 들여다보고 있었다. “대체 얘네가 무슨 일을 하는 거지…?”그렇게 며칠을 헤맨 끝에, 드디어 첫 번째 목표였던 Alarm(알람) 기능을 구현하기 시작했다. Alarm운영체제에서 “알람(Alarm)” 기능은 스레드(Thread)가 “일정 시간 동안 잠들었다가 자동으로 깨어..
프로세스와 스레드의 관계프로세스(Process) 는 실행 중인 프로그램의 인스턴스로,각자 독립된 메모리 공간(Code, Data, Stack, Heap)을 갖는다.하지만 프로세스 간 전환은 느리고, 자원 공유가 어렵다. 스레드(Thread) 는 한 프로세스 내부에서 실행 흐름을 여러 개로 나눈 것이다.스레드들은 같은 메모리 공간(코드, 데이터, 힙) 을 공유하지만자신만의 스택(Stack) 과 레지스터(실행 상태) 를 가진다. 👉 즉, 스레드는 “프로세스의 실행 단위” 이며,하나의 프로그램이 동시에 여러 일을 처리할 수 있게 한다. 스레드의 필요성 1. 성능스레드는 메모리 공유 덕분에 프로세스보다 전환이 빠르다.새 스레드를 만드는 비용은 프로세스를 만드는 것보다 훨씬 작다.2. 병렬성 (Parallel..
Tiny 서버란 무엇인가Tiny는 200줄로 동작하는 실제 웹 서버입니다. 단순하지만,HTTP 프로토콜과 소켓 프로그래밍의 핵심 개념을 모두 담고 있습니다. Main 함수 - 서버의 시작점 💡 포인트“Tiny는 멀티스레드가 아니라 반복적(Iterative) 서버다.”“한 번에 한 클라이언트 요청만 처리한다.”1. 변수 선언부int listenfd, connfd;char hostname[MAXLINE], port[MAXLINE];socklen_t clientlen;struct sockaddr_storage clientaddr; listenfd: 서버가 클라이언트의 연결 요청을 "듣는(listen)" 소켓의 파일 디스크립터connfd: 실제로 연결이 성립된 후, 클라이언트와 데이터 송수신에 사용하는 “..
왜 FD와 FDT를 알아야 할까?우리가 사용하는 하나의 프로그램(프로세스)은 얼마나 많은 데이터를 다룰까요?아마 우리가 상상하는 것 이상으로, 수많은 파일, 네트워크 연결, 장치와 같은 자원들을 동시에 관리하고 있을 거예요.하지만 컴퓨터도 무한한 데이터를 무질서하게 다룰 수는 없습니다.모든 자원을 체계적으로 관리하기 위한 도구가 필요하죠.바로 그 역할을 하는 것이 FD(File Descriptor) 와 FDT(File Descriptor Table) 입니다.이번 글에서는 운영체제가 어떻게 이 두 개념을 통해“모든 것을 파일처럼” 다루는지를 쉽게 풀어보겠습니다. 파일 디스크립터(FD)란 무엇인가?정의파일 디스크립터(File Descriptor, FD)는운영체제가 프로세스에게 파일이나 입출력 자원을 식별시키..