일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정보처리기사실기
- JSP/Servlet
- C++
- 딥러닝
- CNN
- pandas
- 파이썬
- 컴퓨터비전
- numpy/pandas
- 중학1-1
- 코딩테스트
- 파이썬라이브러리
- html/css
- 자바 실습
- 연습문제
- SQL
- 컴퓨터구조
- 중학수학
- 데이터분석
- 머신러닝
- 운영체제
- 영어공부
- 정보처리기사필기
- 자바
- 데이터입출력구현
- 데이터베이스
- 혼공머신
- 정수와유리수
- 텍스트마이닝
- CSS
- Today
- Total
목록알고리즘 및 자료 관리 (214)
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
수학 공부도 마쳤고 이제 아침 공부가 3시간도 남지 않았지만 가능하면 14장 학습을 마쳐보려고 한다. 14장은 가상 메모리 단원인데 3개의 절로 이루어져 분량이 정말 많다. 차근차근 학습해 보기로 하자. 이제 고지가 얼마 남지 않았다.운영체제의 가장 핵심적인 역할을 꼽으라 한다면 프로세스 관리와 메모리 관리라 할 정도로 중요한 영역이다. 지금까지 운영체제의 프로세스 관리에 대해 알아보았다면 이번에는 큰 주제를 전환하여 운영체제의 메모리 관리 기법에 대해 알아볼 것이다. 이번 절에서는 기본적인 메모리 관리 기법인 스와핑과 메모리에 프로세스를 할당하는 방식, 그리고 연속 메모리 할당의 부작용인 외부 단편화에 대해 학습해보겠다. 지금까지는 메모리 내에 프로세스들이 연속적으로 배치되는 상황을 가정했다. 위의..
오늘의 마지막 새벽 공부를 시작해본다. 어제 오후에 낮잠을 많이 잔 관계로 오후 5시 반부터 새벽 5시가 넘도록 12시간 연속 공부를 하는 중이다. 중간에 저녁을 먹느라 30분 정도 쉬었을까 나머지는 모두 열공 중이다.앞선 포스트에서 교착 상태가 어떨 때 발생하는지에 대해서 학습했다. 운영체제는 교착 상태를 회피할 수도, 예방할 수도, 검출 후 회복할 수도 있다. 이러한 각각의 해결 방법에 대해 알아보겠다. 운영체제는 애초에 교착상태가 일어나지 않도록 교착 상태 발생 조건에 부합하지 않게 자원을 분배하여 교착 상태를 예방할 수 있다. 교착 상태가 발생하지 않을 정도로 조금씩 자원을 할당하다가 교착 상태의 위험이 있다면 자원을 할당하지 않는 방식으로 교착 상태를 회피할 수도 있다. 그리고 자원을 제약 없..
13장 교착상태에 대해서 공부해보려고 한다. 벌써 새벽 4시가 조금 넘었다. 이 단원만 마치고 오늘 새벽에는 어제 못한 수학 공부도 하고 아침 운동도 하려고 한다. 그러러면 2시간 안에 이 공부를 다 마쳐야 한다. 동시에 실행되는 여러 프로세스는 각자가 필요한 자원을 할당받아 실행된다. 그 과정에서 때로는 프로세스들이 꼼짝도 못하고 정지해 버리는 교착 상태가 발생할 수 있다. 이번 장에서는 교착 상태란 무엇인지, 운영체제는 교착 상태를 어떻게 해결하는지에 대해 알아보겠다. 교착 상태를 해결하는 것 또한 운영체제가 맡는 중요한 임무 중 하나이다. 교착 상태란 무엇이며, 그를 표현하는 자원 할당 그래프와 교착 상태의 발생 원인을 예시를 통해 학습해볼 것이다. 이렇게 교통이 마비되어 버리면 복구되기까지 오랜 ..
동기화의 개념을 익혔으니 이제 동기화 기법에 대해서 공부해보려고 한다. 이제 새벽 3시가 다 되어간다. 오늘은 철야를 하며 공부해 볼 생각이다.프로세스를 동기화하지 않으면 겉보기에 아무런 문제 없어보이는 코드도 예기치 못하게 작동될 수 있다. 이번 절에서는 동기화를 위한 대표적인 도구인 뮤텍스 락, 세마포, 모니터에 대해 학습해 보겠다. 프로세스 동기화는 어떻게 이루어질까? 어떻게 해야 임계 구역에 오직 하나의 프로세스만 진입하게 하고, 올바른 실행 순서를 보장할 수 있을까? 이제 동기화를 위한 대표적인 도구인 뮤텍스 락, 세마포, 모니터에 대해 알아볼 것이다. 뮤텍스락임계 구역 문제와 이를 해결하기 위한 동기화를 옷 가게에서 탈의식을 이용하는 것에 비유해 보자. 옷 가게에서 마음에 드는 옷이 없으면..
12장 프로세스 동기화에 대해서 학습해보려고 한다. 동시다발적으로 실행되는 수많은 프로세스는 서로 협력하기도 하고, 자원을 두고 경쟁하기도 한다. 이번 장에서는 프로세스가 동시에 실행될 때 반드시 거쳐야 할 동기화에 대해 학습해 보겠다. 그리고 동시에 실행되는 프로세스들을 올바르게 실행하기 위해서는 무엇을 고려해야 하는지도 알아볼 것이다.운영체제의 프로세스 관리 서비스 중 가장 중요한 두 가지를 꼽자면 스케줄링과 동기화이다. 이를 동기화라고 한다. 이번 절에서는 동기화란 무엇인지 개념을 정리하고, 프로세스를 동기화하지 않을 경우 발생할 수 있는 문제들을 통해 동기화가 왜 필요한지 알아보게 될 것이다. 동기화의 의미동시다발적으로 실행되는 많은 프로세스는 서로 데이터를 주고받으며 협력하며 실행될 수 있..
이어서 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..