sw사관학교 정글 28

운영체제 (3) - 프로세스, 스레드 (정글사관학교 55일차 TIL)

동기식 입출력 / 비동기식 입출력 프로세스가 입출력 요청 → 입출력 처리를 운영체제가 하니 사용자가 운체한테 요청. 동기식 입출력: I/O 요청 후 입출력 작업 완료된 후에 제어가 사용자 프로그램에게 넘어감. 구현 1 I/O가 끝날 때까지 CPU 낭비 매시점 하나의 I/O만 일어날 수 있음. 구현 2 I/O가 완료될 떄까지 해당 프로그램에게서 CPU 뺏음. I/O 처리 기다리는 줄에 그 프로그램을 줄세움 ready 상태인 다른 프로그램(프로세스)에게 CPU를 준다 (이것도 동기식이라는 거 주의!) 현재 수업에서 얘기하고 있는 입출력 방식은 동기식 - 구현 2! (비동기식이 아님!) 비동기식 입출력: I/O 가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에게 즉시 넘어감. ⇒ 두..

운영체제(1) - 시스템 구조/프로그램 실행 (정글사관학교 53일차 TIL)

1. 운영체제 운영체제란 무엇인가? 운영체제란, 사용자 및 다른 모든 소프트웨어, 하드웨어를 연결하는 소프트웨어 계층으로, 컴퓨터 계층구조 상에서 하드웨어 바로 위에 올라와있다. 좁은 의미로는 커널(운영체제 중 메모리에 상주하고 있는 핵심 부분)만을 말하고(이는 보통 전공자 입장에서 해당), 넓은 범위로는 커널 뿐만 아니라 각종 주변 시스템 유틸까지 포함한다. 운영체제를 쓰는 목적 1. 하드웨어, 즉 시스템 자원 (CPU, 메모리, 기억장치, 입출력 장치 등)을 효율적으로 관리 여기서 효율성이란, 하드웨어라는 유한한 자원은 이미 주어져있고 세팅된 상황에서는 변경되지 않는데 이 자원을 가지고서 최대한 성능을 낼 수 있도록 하는 관점을 말한다.한 가지 예로 CPU의 경우, 실행 중인 프로그램들에게 짧은 시간..

정글사관학교 50일차 TIL: 웹서버 개념 정리

웹서버 1. Web Basics 클라이언트와 서버는 텍스트 베이스인 HTTP로 통신함. HTTP: 매우 단순. 클라이언트는 서버와 인터넷 연결을 open하고 콘텐츠를 요청한다. 서버는 요청받은 콘텐츠에 대해 응답하고 연결을 종료한다. 브라우저는 콘텐츠를 읽고 화면에 띄운다. FTP와 HTTP와의 차이? 가장 큰 차이는 웹 콘텐츠가 HTML 언어로 쓰여진다는 점. HTML 프로그램은 태그를 갖고 있는데, 이 태그는 브라우저에게 어떻게 다양한 텍스트와 그래픽 요소들을 페이지에 띄울 것인지 알려준다. 반면 FTP는 파일을 전송하는 프로토콜. 2. Web content 클라이언트와 서버에게 content란 MIME type을 지닌 바이트의 연속. MIME는 파일의 유형을 나타냄.(html, gif, png, j..

정글사관학교 49일차 TIL: 파일 디스크립터, 소켓 프로그래밍

파일 디스크립터(File descriptor) 파일 디스크립터란 운영체제가 특정 파일에 할당해준 정수값을 말한다. 컴퓨터 프로그래밍 시 운영체제가 파일에 접근하기 쉽게 번호로 추상화시켰다고 보면 된다. 예컨대 3학년 8반 5번 김철수라는 아이를 일일이 김철수라 부르지 않고 "3-8반 5번"으로 부른다고 생각하면 된다. 우리가 자주 사용하는 표준 입출력 역시 이미 파일 디스크립터 값이 할당되어 있는데, 값은 아래와 같다. stdin(표준입력): 0 stdout(표준출력): 1 stderr(표준에러): 2 위처럼 0-2까지는 이미 파일 디스크립터 값이 할당되어 있으니, 우리가 사용할 수 있는 건 3 이상부터다. 하지만 이 번호는 OS에서 알아서 매겨주기 때문에 신경 쓸 필요는 없다. 파일 디스크립터 값 할당..

정글사관학교 45일차 TIL: 인터넷 네트워크 개념 정리(TCP/IP, UDP)

malloc 주차가 끝나고, 이제 OS 전 마지막 준비 단계인 주차에 들어섰다. 간만에 밀린 운동도 해서 기분은 좋으나 매우 피곤한 관계로, 빠르게 정리하고 집에 갈 예정. 인터넷 네트워크 인터넷 통신 클라이언트와 서버는 어떻게 통신할까? 중간에 인터넷이라는 놈이 둘 사이를 연결해준다. 그러면 이 인터넷은 어떻게 구성되어 있는 걸까? 인터넷은 수많은 서버 노드의 집합이라고 생각하면 된다. IP(인터넷 프로토콜) 클라이언트와 서버는 무작정 소통하는 게 아니다. 둘 사이에는 일종의 전송 규칙을 설정해 통신하는데, 이때 정하는 규칙을 IP(인터넷 프로토콜)이라고 한다. IP의 역할은 크게 두 가지이다. IP address를 통해 데이터를 전달 패킷 형태로 데이터를 전송 IP는 일종의 통신 규약이라고 했다. I..

정글사관학교 44일차 TIL: Explicit malloc 정리 및 구현 review

어제 떡하니 코드만 달랑 올려놓고 말아서 많은 분들이 실망했을 것으로 아는 바, 오늘은 디테일하게 Explicit 방식에 대해 정리하고 코드까지 리뷰하는 것으로 TIL 정리를 해보겠다. 정리를 하기 전에, 동적 메모리 할당 이전에 나오는 개념인 시스템 콜에 대해 간단히 정리하고 넘어간다. 시스템 콜 시스템 콜: OS(특히 커널)이 제공하는 서비스에 접근하기 위한 상호작용을 말한다. 커널(kernel): 메모리에 상주하고 있는 운영체제 핵심 중 일부를 뜻한다. 응용프로그램이 컴퓨터 시스템에서 수행되기 위해서는 메모리에 프로그램이 올라가 있어야 한다. 운영체제 역시 하나의 프로그램으로, 메모리에 올라가야 하는데 OS는 무겁기 때문에 필요한 핵심만 메모리에 올라간다. 이때, 메모리에 상주해 있는 OS의 일부를..

정글사관학교 42일차 TIL: Implicit free list(묵시적 가용 리스트)

지난 포스팅에 이어서 진행. 정글사관학교 40일차 TIL: 동적 메모리 할당(malloc), 힙 단편화(fragmentation) malloc: Dynamic memory allocation(동적 메모리 할당) Dynamic Memory Allocator 우리는 왜 동적 메모리 할당을 이용할까? C언어에서는 배열을 만들 때, 반드시 그 사이즈를 미리 선언해줘야 한다. 예컨대 2학년.. woonys.tistory.com 이번에는 가장 기본으로 구현하는 Implicit free list(묵시적 가용 리스트)부터 정리해본다. 번역한 단어가 영 입에 감기지 않아 여기서는 implicit이라고 부르겠다. Implicit free list(묵시적 가용 리스트) allocator는 블록 간 경계를 구분하고 할당된 블..

SW정글사관학교 3기 합격 후기!

1. Intro 지난 8월 말, 1년간 운영해왔던 창업팀에서 나오기로 했다. 정말 많이 고민한 끝에 결정을 내렸지만, 막상 저 말을 하기까지도 입이 쉽사리 떨어지지 않았다. 그만두게 된 이유야 여러 가지가 있지만 개인적으로 아쉬웠던 점은 진정성과 전문성이었다. AI 딥테크 스타트업을 운영한다는 대표가 프로덕트에 대한 이해도가 떨어진다는 게 말이 되지 않았다. 그 수준이 최소한 고객의 눈높이와는 동등했어야 했는데 우리의 고객은 산업계 경험이 있는 AI 엔지니어다 보니 그것 또한 쉽지 않았다. 배우면 된다는 마인드는 오히려 프로의 그것과는 거리가 멀었다. 공학으로 석사까지 전공했지만 짧은 시간 안에 빠르게 따라잡기에는 무리가 있었다. 창업팀을 나오겠다고 다짐하면서, 다음 커리어에서는 디지털 제품에 대한 이해..