본 포스트는 공룡책이라 불리는 Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 10th』 을 바탕으로 작성하였습니다. Ch 5. CPU Scheduling CPU 스케줄링은 다중 프로그램 운영체제의 기본이다. 운영체제는 CPU를 프로세스 간에 교환함으로써, 컴퓨터를 보다 생산적으로 만든다. 이번 장에서는 기본 스케줄링 개념과 여러 스케줄링 알고리즘을 소개한다. 5.1 기본 개념들 1) 프로세스 실행은 CPU 버스트와 I/O 버스트의 반복이다. 2) CPU 스케줄러 CPU가 유휴 상태가 될 때마다, 운영체제는 준비 큐에 있는 프로세스 중 하나를 선택해 실행해야 한다. 선택 절차는 CPU 스케줄러에 의해 수행된다. (주..
본 포스트는 공룡책이라 불리는 Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 10th』 을 바탕으로 작성하였습니다. Ch 4. Threads & Concurrency 대부분의 현대 운영체제는 한 프로세스가 다중 스레드를 포함하는 특성을 제공한다. 특히 다중 CPU를 제공하는 최신 다중 코어 시스템에서 스레드 사용을 통한 병렬 처리의 기회를 식별하는 것이 점차 중요해지고 있다. 4.1 Overview 스레드는 CPU 이용의 기본 단위이다. 스레드는 스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 그리고 스택으로 구성된다. 또한 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 열린 파일이나 신..
본 포스트는 공룡책이라 불리는 Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 10th』 을 바탕으로 작성하였습니다. Ch 3. Process 오늘날 컴퓨터 시스템들은 메모리에 다수의 프로그램을 제어하고, 구획화할 것을 필요로 한다. 이러한 필요성은 프로세스의 개념을 만들었고, 프로세스란 실행 중인 프로그램을 말한다. 프로세스는 현대의 컴퓨팅 시스템에서 작업의 단위이다. 이번 장에서는 프로세스가 무엇인지, 운영체제에서 어떻게 표현되는지 그리고 어떻게 작동하는지에 대해 설명한다. 3.1 프로세스 개념 (Process Concept) 운영체제에 대해 논의할 때 중요한 것 중 하나는 "모든 CPU 활동들을 어떻게 부를 것..
본 포스트는 공룡책이라 불리는 Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 10th』 을 바탕으로 작성하였습니다. Ch 2. Operating System Structures 운영체제에 대해 살펴보기 위한 몇 가지 좋은 관점이 있다. 첫 번째, 운영체제가 제공하는 서비스에 초점을 맞추는 것 두 번째, 운영체제가 사용자와 프로그래머에게 제공하는 인터페이스에 초점을 맞추는 것 세 번째, 시스템의 구성요소와 그들의 상호 연결에 초점을 맞추는 것이다. 이번 장에서는 운영체제의 세 가지 측면을 모두 살펴본다. 운영체제가 제공하는 서비스는 무엇이며, 이 서비스는 어떤 방식으로 제공되는지, 이 서비스들이 어떻게 디버깅 되며,..
본 포스트는 공룡책이라 불리는 Abraham Silberschatz, Peter B. Galvin, Greg Gagne의 『Operating System Concept 10th』 을 바탕으로 작성하였습니다. Ch 1. Overview 1장에서는 이 책의 전반적인 내용을 모두 담고 있다. 따라서 책을 모두 읽고 난 후 다시 1장을 읽어보는 것을 추천한다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중개자(intermediary) 역할을 한다. 운영체제의 목적은 사용자가 프로그램을 편리하고 효율적으로 수행할 수 있는 환경을 제공하는 데 있다. 1.0 Introduction 운영체제는 컴퓨터 하드웨어를 관리하는 소프트웨어이다. 또한 응용 프로그램을 위한 기반을 제공하는데, 놀라운 점은 이러한 일들을 ..
서론 우선 필자는 이번 글이 os를 처음 공부하면서 작성한 글이다. 학교 수업을 듣지도 않았고, 따로 강의를 보지도 않았다. 그저 운영체제 책 중 공룡책이란 놈이 가장 유명하고 바이블이라고 하길래 무작정 사서 독학하면서 쓰는 글이다. 하지만 혼자 공부하면서 내용 정리 글까지 쓰면 초반부에 무언가 잘못 이해하면 끝까지 잘못 이해한 채로 글을 써서 다른 사람에게 피해가 갈 수 있기 때문에 최대한 이 공룡책을 잘 정리했다고 생각되는 블로그들을 몇 군데 참고해 공룡책과 함께 읽고, 정리하였다. 아무쪼록, 부족한 글이지만 이 글들이 다른 분들에게 조금이라도 도움이 되었으면 좋겠다. 참고 공룡책 이 녀석이 공룡책이다! 그림과 같이 필자는 Abraham Silberschatz, Peter B. Galvin, Greg..
이 글은 REST API Tutorial의 REST Resource Naming Guide 글을 번역해 작성한 글입니다. 최대한 원본 내용을 유지하겠으나, 중간에 제가 읽었을 때 모르는 것 또는 이해가 안 되는 부분은 파란색 글씨로 적어두니 참고 바랍니다. REST 리소스 네이밍 가이드 여기서 REST란, 웹에 존재하는 모든 자원(이미지, 동영상 등)에 고유한 URI를 부여해 활용하는 방법론을 의미합니다. REST 상에서, 주요 데이터들은 리소스(자원)이라 부른다. 강력하고 일관된 REST 리소스 네이밍 전략을 사용하는 것은 장기적으로 봤을 때 가장 좋은 선택 중 하나가 될 것이다. 리소스는 싱글톤 또는 컬렉션이 될 수 있다. 예를 들어, customers는 컬렉션 리소스이고, customer는 싱글톤 ..
1. 개요 대망의 계획했던 HTTP 마지막..! 챕터이지만 이 부분, 내용이 상당히 많다. 기본적인 헤더 정보에서 시작해, 캐시와 조건부 헤더, 상태 코드에 따른 리다이렉션 location이나 Allow 등도 헤더와 관계되어 있고, 심지어 우선순위도 헤더 정보에 들어가 있어 전부 설명할 수 있을지 모르겠다. 선뜻 글을 시작하기 두렵지만 일단 차근차근 함께 알아가보자. 2. HTTP 헤더 개요 2.1 HTTP 직접 확인하기 HTTP 헤더를 직접 확인하는 방법은 다음과 같다. 1. 아무 웹 페이지나 들어간 후 [마우스 오른쪽 클릭] - [검사]를 누른다. 보통 이런 화면이 오른쪽에 뜰 텐데, 여기서 빨간 네모 박스 "Network"를 누른다. 그럼 이런 화면이 뜨는데, 여기 내용물들 중 아무거나 클릭하면 이..
1. 서론 저번 시간에는 메서드에 대해 배웠다. 만약 면접에서 REST API가 무엇인가요?라고 물으면 GET, POST, PUT, PATCH, DELETE 정도는 알아야 한다고 한다. 이번 시간에는 그 정도로 외워야 하진 않지만, 개발하다 보면 자연스럽게 알게 되는 404 에러 같은 걸 공부해보자. 참고로 모든 상태 코드를 적는 건 너무 귀찮은 일이기 때문에 핵심적인 부분만 다룰 예정이다. 2. 상태코드 분류 상태 코드는 모두 세 자릿수 숫자로 구성되는데, 그중 백의 자릿수에 따라서 큼지막한 기능들을 구분한다. 1xx (Informational) : 요청이 수신되어 처리 중 2xx (Successful) : 요청 정상 처리 3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요 4xx ..
1. 서론 저번 시간에는 HTTP의 기본적인 특징에 대해 살펴보았다. 대표적으로 무상태, 비연결성 등이 있었고, 이들은 지금까지 HTTP를 계속 사용할 수 있는 기반이 되었다. 필자는 1학년 때 함수와 메서드라는 단어를 처음 배우면서 게임 안의 캐릭터의 스킬이랑 매칭 시켜 이해했는데, HTTP도 비슷하다. 지금까지는 특성(스텟)에 대해 배웠다면, 스킬(행동)에 대해 공부해보자. 2. HTTP 요청 메서드의 종류 제목은 HTTP 메서드라고했지만, MDN Web Docs 에서는 요청 메서드라고 한다. 1) GET 리소스를 조회한다. 보통 쿼리를 통해 전달하는데, 앞 장에서 설명했듯이 이런 방식이다. (?key1=value1&key2=value2) 동작 방식 메시지 전달(GET 메서드 사용) -> 서버 도착 ..
1. 서론 보통 다른 글에서 보면 HTTP의 역사부터 설명을 하던데, 딱히 내가 들었을 때는 기억에 남는 게 없어서 이번 글에서는 HTTP 특징만 설명할 예정이다. 서론이니 딴 소리를 아주 잠깐만 하자면.. 스프링이라는 이름의 유래는 이전에 Java EE(엔터프라이즈 에디션)의 스펙을 구현한 EJB가 기술의 복잡도가 증가해서 성능이 느렸던 것을 탈피하여, EJB 시절을 “겨울”에 빗대어 겨울 후의 “봄”으로 새로운 시작한다는 것을 의미하는 스프링(봄)이 되었다고 한다. 2. 이 모든 게 HTTP 최근 HTTP의 중요도가 갈수록 높아지고 있다. 정확히 말하자면, 거의 대부분을 HTTP 메시지에 담아 전송하고 있는데 예를 들어 HTML, JSON, 이미지, 영상, 파일뿐만 아니라 서버 간 데이터를 주고받을 ..
1. 서론 저번 학기 모바일 스튜디오 수업 때 안드로이드 앱을 하나 만든 적이 있는데, 거기서 URI를 파싱 해서 이미지를 참 많이도 불러왔었다. 그땐 URI가 비트맵처럼 이미지와 관련된 무언가? 일 거라고만 생각했지 막상 찾아볼 생각을 안 했는데, 이번에 URI에 대해 알고는 조금 놀랐다. 이 글은 간단한 내용이지만 나의 무지를 반성하고자 넣었다. 2. URI(i) URL이 아니라 URI이다. URI는 인터넷 자원을 나타내는 고유 식별자로 풀 네임은 Uniform Resource Identifier이다. 단어를 천천히 해석해보면 다음과 같다. Uniform : 리소스를 식별하는 통일된 방식 Resource : 자원. URI로 식별할 수 있는 모든 자원을 의미한다. Identifier : 다른 항목과 구..