Jost Do It.

그냥 IT해.

반응형

스터디 10

[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 13 교착 상태

Chapter 13. 교착 상태 요약 교착 상태의 정의와 발생 원인을 학습하고, 이를 해결하는 방법에 대해 알 수 있었다. 내용 정리 13-1. 교착 상태란 교착 상태(deadlock) 두 개 이상 프로세스가 각자 자원을 점유하고, 서로의 자원을 요구할 때에 더 이상 프로세스 진행이 불가해진다. 즉, 서로의 종료만을 기다리며 진행이 멈춰버릴 때 교착 상태가 발생한다. 식사하는 철학자 문제(dining philosophers problem) 교착상태를 잘 설명하는 예시 철학자는 프로세스 또는 쓰레드, 포크는 자원, 생각하는 행위는 자원을 기다리는 것으로 이해할 수 있다. 포크는 한 번에 한 스레드에만 접근할 수 있으니 임계 구역으로 생각할 수 있다. 식사하는 철학자 문제 과정 모든 철학자는 원형 테이블에 ..

[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 12 프로세스 동기화

Chapter 12. 프로세스 동기화 요약 프로세스 동기화의 의미와 다양한 기법들에 대해 알 수 있었다. 내용 정리 12-1. 동기화란 동기화의 의미 프로세스 동기화(synchronization) 프로세스 사이 수행 시기를 설정하는 것 동시다발적으로 실행되는 프로세스들은 독립적이거나, 서로 정보를 주고받고 협력할 수 있다. 서로 영향을 주는 프로세스들은 실행 순서와 자원 사용의 일관성을 보장해야 하기에 동기화 돼야 한다. 참고> 프로세스 뿐 아니라 스레드도 동기화의 대상이다. 즉, 실행의 흐름을 갖는 모든 것은 동기화 대상이다. 프로세스 동기화 시 요구조건 실행 순서 제어: 프로세스를 올바른 순서로 실행 상호 배제: 동시에 접근하면 안되는 자원에 하나의 자원만 접근할 수 있도록 하기 1. 실행 순서 제어..

[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 11 CPU 스케줄링

Chapter 11. CPU 스케줄링 요약 CPU 스케줄링의 개념과 방법들에 대해 공부할 수 있었다. 내용 정리 11-1. CPU 스케줄링 개요 CPU 스케줄링 CPU 스케줄링 (CPU scheduling) 운영체제가 프로세스들에게 정해진 규칙으로 CPU 자원을 배분하는 것 CPU 스케줄링에 따라 컴퓨터 성능에 큰 영향을 미침 반드시 실행되야 할 프로그램이 적절히 실행되야 함 급한 프로세스는 우선 실행되고, 급하지 않은 프로세스들은 차선으로 실행할 수 있어야 함 프로세스에 CPU 자원 배분이 질서적으로 가능해야 함 프로세스 우선순위 프로세스 프로세스는 일의 중요도에 따라 우선순위가 존재한다. 우선순위가 높은 프로세스: 우선순위가 낮은 프로세스들 보다 빨리 처리 되야 하는 프로세스 프로세스는 실행 상태와 ..

[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 10 프로세스와 스레드

Chapter 10. 프로세스와 스레드 요약 운영체제가 프로세스를 관리하는 방식을 알 수 있었고, 프로세스와 스레드의 차이에 대해 배울 수 있었다. 내용 정리 10-1. 프로세스 개요 프로세스(process) 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행할 때의 프로그램 프로세스를 생성한다 고 표현함 프로세스 확인하기 윈도우: 작업 관리자 -> 프로세스 탭 유닉스 체계: ps 명령어 프로세스 유형 포그라운드 프로세스(foreground process): 사용자가 보는 앞에서 실행되는 프로세스 백그라운드 프로세스(background process): 사용자가 보지 못하는 뒤편에서 실행되는 프로세스 사용자와 상호작용하는 백그라운드 프로세스와 그렇지 않은 프로세스가 있다. 데몬(demon): 유닉스 ..

[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 9 운영체제 시작하기

Chapter 9. 운영체제 시작하기 요약 운영체제의 개요와 운영체제가 하드웨어의 시스템을 어떻게 통제하는지 이해할 수 있었다. 내용 정리 09-1. 운영체제를 알아야 하는 이유 운영체제란 운영체제(Operating system) 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램 시스템 자원: 프로그램 실행에 필요한 요소들로 줄여서 자원이라고도 부름 근본 프로그램이기 때문에 컴퓨터가 부팅될 때 메모리의 커널 영역 내에 따로 적재돼 실행된다. 커널 영역(kernel space): 운영체제가 메모리에 적재되는 공간 사용자 영역(user space): 커널 영역을 제외한 영역으로 사용자가 이용하는 응용 프로그램이 적재되는 공간 응용 프로그램(application softw..

[컴퓨터 구조] 혼자 공부하는 컴퓨터구조 + 운영체제 Chapter 8 입출력장치

Chapter 8. 입출력장치 요약 입출력장치가 컴퓨터와 소통하는 방법을 알 수 있었다. 내용 정리 08-1. 장치 컨트롤러와 장치 드라이버 입출력장치가 다루기 까다로운 이유 1. 입출력 장치의 종류가 너무 많다. 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기 어렵다. 장치마다 속도, 데이터 전송 형식 등이 모두 달라지게 된다. 2. 입출력장치의 데이터 전송률이 CPU, 메모리에 비해 낮다. 전송률(transfer rate): 데이터를 얼마나 빨리 교환할 수 있는지 나타내는 지표 전송률의 차이는 CPU와 메모리, 입출력장치간 통신이 어렵게된다. 장치 컨트롤러를 통해 위 한계를 극복한다. 장치 컨트롤러(device controller) 입출력장치는 컴퓨터와 직접적으로 연결하지 않고, 장치 컨트롤러라..

프로그래머가 알아야 할 알고리즘 40 Chapter 4 알고리즘 설계

4장. 알고리즘 설계 요약 알고리즘을 설계할 때 중요한 포인트들과 여러 알고리즘 종류들을 알 수 있었다. 내용 정리 4.1 알고리즘 설계의 기본 개념 살펴보기 알고리즘 설계 "특정 목표"를 가장 효율적으로 달성할 수 있는 "명료한 요구사항으로 구성된 유한한 집합"을 고안하는 것 문제 이해: 풀려는 문제를 명확히 이해해야 한다. 요구 사항: 무엇을 완료해야 하는지를 파악해야 한다. 알고리즘 설계: 어떻게 완료할 것인지 고민해야 한다. 문제 이해 단계 문제의 기능적 요구 사항과 비기능적 요구 사항을 모두 파악해야 한다. 기능적 요구사항: 문제의 입출력 인터페이스, 이와 관련된 함수를 의미함. 기능적 요구사항을 통해 기대하는 결과를 얻기 위해 구현해야 할 데이터 처리, 가공 및 연산과정을 이해 비기능적 요구사..

Study/알고리즘 2022.11.14

프로그래머가 알아야 할 알고리즘 40 Chapter 3 알고리즘에 사용되는 자료구조

3장. 알고리즘에 사용되는 자료구조 요약 정렬과 검색에 사용되는 기본 알고리즘들을 학습할 수 있었다. 내용 정리 3.1 정렬 알고리즘 이해하기 버블 정렬 버블 정렬(bubble sort): 리스트 안에서 가장 큰 값을 반복적으로 옮기는 알고리즘 장점: 가장 간편하다 단점: 속도가 매우 느린 알고리즘 최선의 경우 시간 복잡도: O(n^2) 최악의 경우 시간 복잡도: O(n^2) 버블 정렬의 작동 원리 패스(pass)라는 과정을 반복한다. 패스(pass): 리스트의 큰 값을 오른쪽으로 보내는 행위 패스로 붙어있는 이웃끼리의 값을 비교한 후 오른쪽으로 보내게 된다. k번째 패스마다 리스트의 N-k+1번째 값(k번째로 큰 값)이 결정된다. k번째 패스에서 리스트 내 패스 대상은 0번째 ~ N-k+1번째 까지의 ..

Study/알고리즘 2022.10.31

프로그래머가 알아야 할 알고리즘 40 Chapter 2 알고리즘에 사용되는 자료구조

2장. 알고리즘에 사용되는 자료구조 요약 파이썬에 내장된 자료구조들의 특징과 이를 이용해 구현할 수 있는 추상화 자료형들에 대해 학습할 수 있었다. 내용 정리 2.1 파이썬 자료 구조 파악하기 알고리즘을 실행할 때는 데이터를 보관할 인메모리 자료구조가 필요함 => 적절한 자료구조를 선택하는 것은 효율적인 알고리즘 구현의 필수요소이다. 자료구조(Data structure): 컬렉션을 저장하는 방법론들을 통칭함 컬렉션(collection): 특정 목적을 위해 함께 저장되고 처리되는 데이터 요소들의 묶음 파이썬의 자료구조 종류 리스트(list): 데이터 요소간 순서가 있고, 수정이 가능한 자료구조 튜플(tuple): 데이터 요소간 순서는 있으나 수정이 불가한 자료구조 세트(set): 데이터 요소간 순서가 없고..

Study/알고리즘 2022.10.23

프로그래머가 알아야 할 알고리즘 40 Chapter 1 알고리즘 기초

1장. 알고리즘 기초 요약 책에서 앞으로 공부할 각 단원의 내용마다 왜 공부해야하는지, 어떤 내용이 있는지 핵심요소들을 거시적으로 정리하는 장이었다. 내용 정리 1.1 알고리즘 정의하기 알고리즘(Algorithm): 문제를 풀기 위해 특정한 연산을 수행하는 규칙 정해진 포맷의 입력 데이터를 정의된 연산 규칙에 따라 처리해서 결과를 출력한다. 알고리즘을 설계하는 것은 가장 효율적인 방법으로 현실의 문제를 해결하는 과정이다. 기본적인 알고리즘들의 조합은 더 큰 범위의 문제를 해결하는데 적용될 수 있다. 알고리즘의 개발, 배포, 사용 단계 문제 정의 알고리즘 설계 알고리즘 구현 알고리즘 검증 배포 및 사용 개발 단계: 설계 단계 + 구현 단계 개발 단계에서 설계와 구현 과정을 반복하면서 효율적인 알고리즘을 찾..

Study/알고리즘 2022.10.21
반응형