일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 자바 실습
- 컴퓨터비전
- 중학1-1
- 디버깅
- 개발일기
- 중학수학
- SQL
- 딥러닝
- html/css
- 파이썬
- 스프링프레임워크
- 연습문제
- 혼공머신
- rnn
- 상속
- JDBC
- 데이터분석
- JSP/Servlet
- 타입스크립트심화
- 정보처리기사필기
- 자바스크립트
- 자바스크립트심화
- 쇼핑몰홈페이지제작
- ChatGPT
- 머신러닝
- 데이터베이스
- JSP
- 순환신경망
- 자바
- 정보처리기사실기
- Today
- Total
목록알고리즘 및 자료 관리 (236)
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
이번에도 역시 스레드 실습을 진행해 보겠다. 코드로 스레드 만들기 test.py 파일을 만들고 해당 문서에 코드를 작성해 본다. 실행하면 pid 값을 출력할 수 있다. 이제 스레드를 만들어서 이를 출력해 볼 것이다. 이제 스레드를 실행할 함수를 만들고, 함수 정보와 함께 출력해 준다. 그리고 스레드 번호를 id로 받아오고 프로세스 id 값도 찍어준다. foo의 PID 값이 my pid 값과 동일하다는 것을 알 수 있다. 스레드는 프로세스를 이루고 있는 자원을 공유하고 있고, PID 값도 공유하고 있는 실행 흐름의 단위이기 때문이다. 동일한 작업을 하는 여러 스레드 만들기이번에는 동일한 작업을 하는 스레드를 만들어보았다. 각각의 스레드에서 실행한 스레드 값을 같을까, 다를까? 같을 것..
스레드라는 말을 프로그래밍에서 많이 들어본다. 드디어 스레드에 대해 공부해 본다. 스레드는 프로세스를 구성하는 실행의 흐름 단위이다. 이 말이 정확히 무엇을 의미하는지, 멀리스레드와 멀티 프로세스의 차이를 알아볼 것이다.여기서는 소프트웨어적인 스레드를 학습하게 된다. 개발자로서 일을 하게 된다면 반드시 스레드를 다루게 될 날이 올 것이다. 하지만 스레드와 관련한 내용은 프로그래밍 기본서만 가볍게 학습하면 놓치기 쉬운 부분이기도 하다. 이번 절을 통해 스레드와 멀티스레드란 무엇인지, 멀티스레드는 멀티프로세스와 어떤 차이가 있는지 학습해 보겠다. 프로세스와 스레드전통적인 관점에서 보면 하나의 프로세스는 한 번에 하나의 일만을 처리했다. 가령 웹 브라우저, 게임, 워드 프로세서 프로세스가 있을 때 이 모..
이번에는 파이썬 코드로 프로세스를 확인하는 실습을 진행해보려고 한다. 프로세스 만들기 test.py라는 파이썬 파일이 있고 다음과 같은 코드를 실행시킬 것이다. hello, os!라는 문자열을 출력하는 파일을 하나 작성했다. 이 코드를 실행시키면 이와 같은 문자열이 출력된다. os를 임포트하고, getpid()를 통해 현재 프로세스의 PID 값을 확인해볼 수 있다. PID 값이 출력되었다. PID 값은 운영체제가 그때그때 부여해주는 값이라 똑같은 코드를 쳐도 다를 수 있다. 이렇게 PID 값이 각기 달라지는 것을 확인했다. 프로세스가 끝나면 PID 값을 수거해간다. 동일한 작업을 실행하는 프로세스 만들기 이번에는 자식 프로세스를 생성해보려고 한다. 동시에 실행하는 프로세스를 fo..
이어서 프로세스 상태에 대한 학습을 시작해 본다. 오후에 충분히 쉬었으니 오늘 저녁부터 내일 새벽까지 열심히 달려볼 생각이다. 여기까지만 공부하고 저녁을 먹을 생각이다.프로세스들은 각자의 상태를 가지고 계층적인 구조를 이루고 있다. 프로세스 상태란 무엇인지, 프로세스 계층 구조란 무엇인지 알아보고 코드를 통해 확인해 볼 것이다. 프로세스는 모두 저마다의 상태가 있다. 운영체제는 이런 프로세스의 상태를 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에도 특정 데이터를 쓰고 싶다는 코드를 ..