일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 중학1-1
- 혼공머신
- 연습문제
- 파이썬
- 운영체제
- 데이터입출력구현
- 파이썬라이브러리
- 코딩테스트
- 자바
- CSS
- 정수와유리수
- 머신러닝
- 컴퓨터구조
- CNN
- 데이터베이스
- SQL
- numpy/pandas
- JSP/Servlet
- 자바 실습
- pandas
- C++
- 컴퓨터비전
- 정보처리기사실기
- 영어공부
- 텍스트마이닝
- 중학수학
- html/css
- 딥러닝
- 정보처리기사필기
- 데이터분석
- Today
- Total
목록알고리즘 및 자료 관리 (214)
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
이어서 프로세스 상태에 대한 학습을 시작해 본다. 오후에 충분히 쉬었으니 오늘 저녁부터 내일 새벽까지 열심히 달려볼 생각이다. 여기까지만 공부하고 저녁을 먹을 생각이다.프로세스들은 각자의 상태를 가지고 계층적인 구조를 이루고 있다. 프로세스 상태란 무엇인지, 프로세스 계층 구조란 무엇인지 알아보고 코드를 통해 확인해 볼 것이다. 프로세스는 모두 저마다의 상태가 있다. 운영체제는 이런 프로세스의 상태를 PCB에 기록하여 관리한다. 많은 운영체제는 이처럼 동시에 실행되는 수많은 프로세스를 계층적으로 관리한다. 이번 절에서는 프로세스들의 상태와 계층적 관리에 대해 자세히 알아보겠다. 프로세스 상태컴퓨터를 사용할 때 여러 프로세스들이 빠르게 번갈아 가면서 실행된다. 그 과정에서 하나의 프로세스는 여러 상..
프로세스 관리는 운영체제의 핵심 서비스이다. 운영체제가 관리하는 프로세스가 무엇인지 알아보고 프로세스가 실행되는 과정들을 살펴보겠다. 지금까지는 단순히 '실행 중인 프로그램'이라고 표현했지만, 이 프로그램을 프로세스라고 한다. 프로그램은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리일 뿐이지만, 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 그 프로그램은 프로세스가 된다. 이 과정을 '프로세스를 생성한다'라고 표현한다. 프로세스 직접 확인하기컴퓨터가 부팅되는 순간부터 수많은 프로세스들이 실행된다. 윈도우에서는 작업 관리자의 [프로세스] 탭에서 확인할 수 있고, 유닉스 운영체제에서는 ps 명령어로 확인할 수 있다. 실제로 컴퓨터를 켜고 확인해보면 자신이 실행한 프로..
시스템 호출에 대한 심화 학습을 진행해보려고 한다. 시스템 호출은 운영체제 서비스를 제공받기 위한 방법이므로 시스템 호출 종류만 잘 파악해도 해당 운영체제를 깊이 있게 이해할 수 있다. 이곳에서는 유닉스, 리눅스의 운영체제에서 사용하는 대표적인 시스템 호출의 종류에 대해 알아보겠다. 우선 시스템 호출을 정리한 테이블을 살펴보기로 하자.시스템 호출의 종류 https://minchul.net/self-learning-cs/system_calls/syscalls.html리눅스 시스템 호출 정리 이하 문서는 리눅스의 시스템 콜(x86)을 일부 정리한 문서입니다. 시스템 호출의 이름(Name)을 클릭하면 해당 시스템 호출에 대한 자세한 정보를 안내하는 공식 페이지로 minchul.net 이런 식으로 시스템 호출이..
이이서 운영체제의 큰 그림에 대해서 학습해본다. 요즘 인간에 대한 회의와 염증을 느끼며 마음이 많이 무겁도 힘들다. 전에는 나의 마음을 솔직하게 표현하는 사람이었다. 하지만 개발 세계에 들어와 너무나도 사무적이고 무관심한 사람들로 가득한 사회를 만났다. 그럴 때마다 나를 잃지 않고 다시 일어났지만 요즘은 나도 그들처럼 무심하고 내 감정도 최대한 이야기하지 않기로 다짐해본다. 컴퓨터와 친숙한 사람들이라서 그런지 사고도 정말 컴퓨터적이고 자신에게 이익이 되지 않으면 결코 움직이지 않는다. 그들과의 세대 차이를 많이 느낀다. 이 세대 차이는 단순한 나이가 아닌 난 그들과 다른 세계에 살고 있고 절대로 가까워질 수 없는 벽 같은 것이다.난 가끔 이러한 세상이 무서워진다. 앞으로 10년 후에는 어떤 사고를 하는 ..
오늘은 자유롭게 마음의 휴식을 취하되 내가 해야 할 일은 멈추지 않을 생각이다. 그리고 요즘은 공부가 힘들지가 않다. 그냥 배우는 것이 즐겁다. 이번 시간에는 커널이란 무엇인지 이해하고, 앞으로 개발하고 실행하는 응용 프로그램이 어떻게 운영체제의 도움을 받으며 실행되는지 학습해 볼 것이다. 그리고 운영체제가 응용 프로그램에 어떤 서비스를 제공하는지도 알아보겠다. 운영체제는 사용자를 위한 프로그램이 아닌 사용자가 실행하는 프로그램을 위한 프로그램이다. 즉, 사용자가 실행하는 응용 프로그램이 올바르게 실행되도록 돕고 필요한 자원을 할당해 주는 프로그램이다. 이번 절에서는 운영체제에서 매우 중요한 개념은 커널에 대해 알아보고, 응용 프로그램이 운영체제로부터 어떻게 도움을 받으며 실행되는지를 이해하기 위해 이중..
컴퓨터 구조 공부가 끝나고 이제 운영체제를 공부할 시간이 되었다. 사실 컴퓨터 구조가 너무 어려워서 운영체제는 나중에 공부할까도 생각했지만 그렇게 되면 언제 다시 하게 될지 몰라 내친김에 운영체제까지 공부해 보기로 했다. 우리가 흔히 사용하는 데스크톱 컴퓨터나 노트북, 스마트폰에는 모두 운영체제가 설치되어 있다. 컴퓨터 부품들은 운영체제라는 특별한 프로그램의 지휘하에 작동한다.이번 절에서는 가벼운 마음으로 운영체제가 무엇인지 알아보고, 개발자들이 운영체제를 알아야 하는 이유에 대해 학습해 보겠다. 운영체제란모든 프로그램은 하드웨어를 필요로 한다. 예를 들어 1 + 2를 계산하는 프로그램은 cpu를 필요로 하고, 이미지를 하드 디스크에 저장하는 프로그램은 하드 디스크를 필요로 한다.이때 프로그램 ..
레지스터를 이해할 수 있는 강의를 듣고 내용을 정리해보려고 한다. 레지스터 관련 강의 영상 일종의 작은 컴퓨터로 CPU와 입출력장치가 있다. 여기에 LED, 스위치 등의 입출력장치가 달려 있는데 이러한 입출력장치를 제어하기 위해서는 입출력장치와 관련된 레지스터에 값을 읽고 씀으로써 할 수 있다. 이 부품을 컴퓨터에 연결시켜 이제 C 언어로 코드를 작성해 본다. 이것은 일종의 IDE로 LED를 어떻게 점등시키는지 보여줄 것이다. 이 x라는 부분에 포트를 써주면 연결이 입출력을 설정할 수 있다. DDRA를 출력으로 쓰고 싶다고 한다면 이렇게 쓴다. A에다 출력하겠다는 의미이다. 이것은 8개의 LED를 출력으로 쓰겠다는 의미이다. 그리고 PORT A에도 특정 데이터를 쓰고 싶다는 코드를 ..
이어서 입출력 방법에 대해서 학습해 본다. DMA 입출력 CPU는 장치 컨트롤러에서 입출력 장치 데이터를 하나씩 읽어 레지스터에 적재하고, 적재한 데이터를 메모리에 저장한다. CPU는 메모리에서 데이터를 하나씩 읽어 레지스터에 적재하고 적재한 데이터를 하나씩 입출력장치에 내보낸다. DMA 입출력을 하기 위해서는 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요하다. DMA 입출력 과정 이때 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근한다. 이번에는 메모리 내의 정보를 하드 디스크에 백업하는 작업이 DMA 입출력으로 어떻게 이루지는 지도 알아보자. 위 입출력 과정을 보면 알 수 있듯 입출력장치와 메모리 사이에 주고받을 데이터는 CPU를 거치지 않는다. CPU는 ..
이제 오후 공부를 시작해 본다. 하나의 타임이 끝나고 새로운 시간을 열 때가 가장 시작하기 어려운 것 같다. 그래도 일단 시작하면 다시 집중해서 열심히 하게 된다. 가장 보편적인 입출력 방법인 프로그램 입출력과 인터럽트 기반 입출력, DMA 입출력에 대해 알아보겠다. 입출력 작업을 수행하려면 CPU와 장치 컨트롤러가 정보를 주고받아야 한다. 그렇다면 장치 컨트롤러는 CPU와 어떻게 정보를 주고받을까? 여기에는 크게 세 가지 방법이 있다. 프로그램 입출력, 인터럽트 기반 입출력, DMA 입출력이다. 프로그램 입출력 메모리에 저장된 정보를 하드 디스크에 백업하는 상황을 생각해보자. CPU는 대략 아래 과정으로 입출력 작업을 한다. 메모리 맵 입출력 가령 1024개의 주소를 ..
드디어 8장 한 단원만 학습하면 컴퓨터 구조 학습을 마치게 된다. 지난 3일 동안 정말 열심히 공부해 왔다. 이제 절반 가까이 왔으니 남은 시간도 열심히 공부해 볼 것이다.입출력장치는 컴퓨터 외부에 연결되는 장치이다. 이것들은 컴퓨터 내부와 어떻게 연결되어 있을까? 이와 관련해 장치 컨트롤러와 장치 드라이버에 대해 알아보려고 한다. 이번 절에서는 장치 컨트롤러와 장치 드라이버라는 개념을 통해 다양한 외부 장치가 컴퓨터 내부와 어떻게 연결되고 소통하는지 알아보겠다.여기서 언급하는 입출력장치는 이전 장에서 학습한 보조기억장치도 포함한다. 보조기억장치가 컴퓨터 내부와 정보를 주고받는 방식은 입출력장치와 크게 다르지 않기 때문이다. 장치 컨트롤러 이는 마치 CPU와 메모리는 한국어를 사용하는데, 프린터는..