일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터분석
- 디버깅
- 혼공머신
- CSS
- 중학수학
- 연습문제
- rnn
- 상속
- 자바
- 컴퓨터비전
- JDBC
- JSP/Servlet
- 순환신경망
- 중학1-1
- 파이썬
- SQL
- 머신러닝
- 컴퓨터구조
- 자바 실습
- 데이터베이스
- 오블완
- html/css
- 개발일기
- JSP
- 정보처리기사실기
- 자바스크립트심화
- 자바스크립트
- c언어
- 딥러닝
- 정보처리기사필기
- Today
- Total
목록운영체제 (19)
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
이어서 CPU 스케줄링 알고리즘에 대해서 학습해 보겠다. 앞선 절에서 배운 개념들을 토대로 스케줄링 알고리즘에 대해서 배우게 된다. CPU 스케줄링 알고리즘의 종류는 매우 다양하고 운영체제마다 서도 다른 스케줄링 알고리즘을 사용하고 있다. 여기서 다루지 못한 스케줄링 알고리즘도 있다. 그러므로 각 스케줄링 알고리즘의 작동 방식과 장단점을 이해하는데 집중하여 학습하면 된다. 스케줄링 알고리즘의 종류여기서는 일곱가지 스케줄링 알고리즘에 대해 학습해 본다. 가령 CPU를 오래 사용하는 프로세스가 먼저 도착하면 다른 프로세스는 그 프로세스가 CPU를 사용하는 동안 무작정 기다릴 수밖에 없다.그림에서처럼 A, B, C 프로세스가 차례대로 준비 큐에 삽입된다면 프로세스 C는 고작 2ms를 실행하기 위해 ..
오늘은 밤늦게까지 공부를 할 생각이다. 아직 발행할 포스트가 남아있기도 하고 공부할 내용이 많아서 몇 개는 미리 발행했다가 추후에 수정하는 방식으로 진행해 볼 것이다.모든 프로세스는 운영체제로부터 자원을 할당받는다. 프로세스마다 필요로 하는 자원은 각기 다르지만, 모든 프로세스가 공통으로 사용하는자원이 있다면 CPU이다. 운영체제가 프로세스에게 분배하는 자원 중 가장 중요한 자원은 CPU라고 볼 수 있다. 이번 시간에는 운영체제가 CPU를 어떻게 프로세스에 분배하는지 알아볼 것이다. 모든 프로세스는 CPU를 필요로 하고 먼저 CPU를 사용하고 싶어한다. 이러한 프로세스들에게 공정하고 합리적으로 CPU 자원을 할당하기 위해 운영체제는 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 기다리게 할지를 결..
이번에도 역시 스레드 실습을 진행해 보겠다. 코드로 스레드 만들기 test.py 파일을 만들고 해당 문서에 코드를 작성해 본다. 실행하면 pid 값을 출력할 수 있다. 이제 스레드를 만들어서 이를 출력해 볼 것이다. 이제 스레드를 실행할 함수를 만들고, 함수 정보와 함께 출력해 준다. 그리고 스레드 번호를 id로 받아오고 프로세스 id 값도 찍어준다. foo의 PID 값이 my pid 값과 동일하다는 것을 알 수 있다. 스레드는 프로세스를 이루고 있는 자원을 공유하고 있고, PID 값도 공유하고 있는 실행 흐름의 단위이기 때문이다. 동일한 작업을 하는 여러 스레드 만들기이번에는 동일한 작업을 하는 스레드를 만들어보았다. 각각의 스레드에서 실행한 스레드 값을 같을까, 다를까? 같을 것..
이번에는 파이썬 코드로 프로세스를 확인하는 실습을 진행해보려고 한다. 프로세스 만들기 test.py라는 파이썬 파일이 있고 다음과 같은 코드를 실행시킬 것이다. hello, os!라는 문자열을 출력하는 파일을 하나 작성했다. 이 코드를 실행시키면 이와 같은 문자열이 출력된다. os를 임포트하고, getpid()를 통해 현재 프로세스의 PID 값을 확인해볼 수 있다. PID 값이 출력되었다. PID 값은 운영체제가 그때그때 부여해주는 값이라 똑같은 코드를 쳐도 다를 수 있다. 이렇게 PID 값이 각기 달라지는 것을 확인했다. 프로세스가 끝나면 PID 값을 수거해간다. 동일한 작업을 실행하는 프로세스 만들기 이번에는 자식 프로세스를 생성해보려고 한다. 동시에 실행하는 프로세스를 fo..
이어서 프로세스 상태에 대한 학습을 시작해 본다. 오후에 충분히 쉬었으니 오늘 저녁부터 내일 새벽까지 열심히 달려볼 생각이다. 여기까지만 공부하고 저녁을 먹을 생각이다.프로세스들은 각자의 상태를 가지고 계층적인 구조를 이루고 있다. 프로세스 상태란 무엇인지, 프로세스 계층 구조란 무엇인지 알아보고 코드를 통해 확인해 볼 것이다. 프로세스는 모두 저마다의 상태가 있다. 운영체제는 이런 프로세스의 상태를 PCB에 기록하여 관리한다. 많은 운영체제는 이처럼 동시에 실행되는 수많은 프로세스를 계층적으로 관리한다. 이번 절에서는 프로세스들의 상태와 계층적 관리에 대해 자세히 알아보겠다. 프로세스 상태컴퓨터를 사용할 때 여러 프로세스들이 빠르게 번갈아 가면서 실행된다. 그 과정에서 하나의 프로세스는 여러 상..
프로세스 관리는 운영체제의 핵심 서비스이다. 운영체제가 관리하는 프로세스가 무엇인지 알아보고 프로세스가 실행되는 과정들을 살펴보겠다. 지금까지는 단순히 '실행 중인 프로그램'이라고 표현했지만, 이 프로그램을 프로세스라고 한다. 프로그램은 실행되기 전까지는 그저 보조기억장치에 있는 데이터 덩어리일 뿐이지만, 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간 그 프로그램은 프로세스가 된다. 이 과정을 '프로세스를 생성한다'라고 표현한다. 프로세스 직접 확인하기컴퓨터가 부팅되는 순간부터 수많은 프로세스들이 실행된다. 윈도우에서는 작업 관리자의 [프로세스] 탭에서 확인할 수 있고, 유닉스 운영체제에서는 ps 명령어로 확인할 수 있다. 실제로 컴퓨터를 켜고 확인해보면 자신이 실행한 프로..
이이서 운영체제의 큰 그림에 대해서 학습해본다. 요즘 인간에 대한 회의와 염증을 느끼며 마음이 많이 무겁도 힘들다. 전에는 나의 마음을 솔직하게 표현하는 사람이었다. 하지만 개발 세계에 들어와 너무나도 사무적이고 무관심한 사람들로 가득한 사회를 만났다. 그럴 때마다 나를 잃지 않고 다시 일어났지만 요즘은 나도 그들처럼 무심하고 내 감정도 최대한 이야기하지 않기로 다짐해본다. 컴퓨터와 친숙한 사람들이라서 그런지 사고도 정말 컴퓨터적이고 자신에게 이익이 되지 않으면 결코 움직이지 않는다. 그들과의 세대 차이를 많이 느낀다. 이 세대 차이는 단순한 나이가 아닌 난 그들과 다른 세계에 살고 있고 절대로 가까워질 수 없는 벽 같은 것이다.난 가끔 이러한 세상이 무서워진다. 앞으로 10년 후에는 어떤 사고를 하는 ..
오늘은 자유롭게 마음의 휴식을 취하되 내가 해야 할 일은 멈추지 않을 생각이다. 그리고 요즘은 공부가 힘들지가 않다. 그냥 배우는 것이 즐겁다. 이번 시간에는 커널이란 무엇인지 이해하고, 앞으로 개발하고 실행하는 응용 프로그램이 어떻게 운영체제의 도움을 받으며 실행되는지 학습해 볼 것이다. 그리고 운영체제가 응용 프로그램에 어떤 서비스를 제공하는지도 알아보겠다. 운영체제는 사용자를 위한 프로그램이 아닌 사용자가 실행하는 프로그램을 위한 프로그램이다. 즉, 사용자가 실행하는 응용 프로그램이 올바르게 실행되도록 돕고 필요한 자원을 할당해 주는 프로그램이다. 이번 절에서는 운영체제에서 매우 중요한 개념은 커널에 대해 알아보고, 응용 프로그램이 운영체제로부터 어떻게 도움을 받으며 실행되는지를 이해하기 위해 이중..
컴퓨터 구조 공부가 끝나고 이제 운영체제를 공부할 시간이 되었다. 사실 컴퓨터 구조가 너무 어려워서 운영체제는 나중에 공부할까도 생각했지만 그렇게 되면 언제 다시 하게 될지 몰라 내친김에 운영체제까지 공부해 보기로 했다. 우리가 흔히 사용하는 데스크톱 컴퓨터나 노트북, 스마트폰에는 모두 운영체제가 설치되어 있다. 컴퓨터 부품들은 운영체제라는 특별한 프로그램의 지휘하에 작동한다.이번 절에서는 가벼운 마음으로 운영체제가 무엇인지 알아보고, 개발자들이 운영체제를 알아야 하는 이유에 대해 학습해 보겠다. 운영체제란모든 프로그램은 하드웨어를 필요로 한다. 예를 들어 1 + 2를 계산하는 프로그램은 cpu를 필요로 하고, 이미지를 하드 디스크에 저장하는 프로그램은 하드 디스크를 필요로 한다.이때 프로그램 ..