본문 바로가기

분류 전체보기

(115)
[#혼공] 혼자 공부하는 컴퓨터 구조+운영체제 [Chapter.10] [10-1] 프로세스 개요 프로세스 직접 확인하기 컴퓨터가 부팅되는 순간부터 수많은 프로세스들이 실행됩니다. 윈도우에서는 작업 관리자의 [프로세스] 탭에서 확인할 수 있고, 유닉스 체계의 운영체제에서는 ps 명령어로 확인할 수 있습니다. (%ps -ef) 실제로 확인해보면, 여러분이 실행한 프로세스 외에도 알 수 없는 여러 프로세스가 실행되고 있는 것을 볼 수 있습니다. 사용자가 보는 앞에서 실행되는 프로세스를 포그라운드 프로세스라고 하고, 사용자가 볼수 없는 뒤편에서 실행되는 프로세스를 백그라운드 프로세스라고 합니다. 사용자와 상호작용 없이 묵묵히 정해진 일만 수행하는 백그라운드 프로세스를 유닉스 체계에서는 데몬이라고 부릅니다. 프로세스 제어 블록 모든 프로세스는 실행을 위해 CPU를 필요로 하지만, ..
[#혼공] 혼자 공부하는 컴퓨터 구조+운영체제 [Chapter.09] [09-1] 운영체제를 알아야 하는 이유 운영체제란 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이 바로 운영체제입니다. 즉, 인터넷 브라우저, 게임과 같은 프로그램으로 이해하면 됩니다. 운영체제는 매우 특별한 프로그램이기 때문에 커널 영역이라는 공간에 따로 적재되어 실행되고, 사용자가 이용하는 응용 프로그램은 사용자 영역이라는 곳에서 실행됩니다. 운영체제를 알아야 하는 이유 운영체제가 없다면, 간단한 프로그램이라도 하드웨어를 조작하는 코드를 개발자가 모두 직접 작성해야합니다. 개발자들이 운영체제를 알아야하는 이유는 바로 "문제 해결 능력"과 관련이 있습니다. 운영체제를 깊이 이해하면, 운영체제가 여러분에게 건네는 말을 제대로 이해할 수 있고, 운영체제에 제대로 ..
동시성과 병렬성 동시성 (Concurrency)과 병렬성(Parallelism)에 대해서 예시를 통해서 아래와 같이 설명할 수 있다. 한 식당이 있고, 요리사 A, B, C가 있다. 요리는 라면, 피자, 파스타가 있고, 레시피는 단순하게 아래와 같다고 가정한다. 라면 : 1. 물 끓이기 2. 스프 넣기 피자 : 1. 반죽 2. 토핑올리기 3. 오븐에 넣기 파스타 : 1. 면 끓이기 2. 소스 만들기 3. 조리하기 동시성 요리사 A가 라면 물 끓이기 -> (스위칭) -> 파스타 면 끓이기 -> (스위칭) -> 피자 반죽하기 -> 라면 스프 넣기 ... 이처럼 한 명의 요리사 스위칭하며 여러 작업을 수행할 수 있다. 병렬성 요리사 A가 라면 : 1. 물 끓이기 2. 스프 넣기 요리사 B가 피자 : 1. 반죽 2. 토핑올리기..
코루틴 스스로 메모를 위해서 순서에 대한 맥락이나 두서 없이 코루틴에 대해서 끄젹여 놓은 페이지입니다. 기본 개념을 배우고자 하시는 분은 뒤로 가기를 눌러주세요. :) 파이썬 공식 문서 : https://docs.python.org/ko/3/library/asyncio.html asyncio — Asynchronous I/O Hello World!: asyncio is a library to write concurrent code using the async/await syntax. asyncio is used as a foundation for multiple Python asynchronous frameworks that provide high-performance n... docs.python.org 용어..
동기와 비동기 이번 장에서는 동기와 비동기 코드 처리 방법에 대해서 이해합니다. 동기 함수: 작성된 순서대로 동작한다. 비동기 함수: 코드가 반드시 작성된 순서대로 동작하는 것이 아니다. (코루틴 함수라고도 한다.) 위의 차이를 아래의 실제 상황에 비유하여 설명하자면, ex) 자장면을 배달하는 배달부 delivery_func: 1. 자장면을 주문자에게 배달한다. 2. 해당 주문자가 다 먹은 그릇을 문 앞에 두면 수거한다. 만약에 주문자가 3명 (A, B, C)라고 한다. 현재 상황 : A, B, C가 주문이 접수되고 배달부는 A, B, C의 자장면을 음식점에서 받은 상황이라고 하자. 동기의 경우, 1. A의 자장면을 배달한다. 2. (20분 후) A의 자장면 그릇을 수거한다. 3. B의 자장면을 배달한다. 4. (20..
CPU 바운드, I/O bound, 블로킹 코드 실행 시 실행이 지연되는 현상이 발생하고는 합니다. 이런 현상을 "블로킹"이라고 부릅니다. 프로그램을 최적화하거나 성능을 개선하려면 블로킹의 원인이 CPU 바운드인지 I/O 바운드인지 파악하여 적합한 방법으로 개선 작업을 진행하는 것이 중요합니다. CPU 바운드 CPU 바운드 상태에서는 프로그램이 다른 자원들보다 CPU 연산에 더 많은 시간을 소비합니다. 이는 프로그램이 수행해야 할 연산이 많고 복잡하거나, 데이터 처리가 많이 필요한 경우에 발생할 수 있습니다. 이러한 경우에는 CPU가 연산을 처리하기 위해 많은 시간과 노력을 필요로 하기 때문에 전체적인 성능이 저하될 수 있습니다. 아래 코드를 실행하면, CPU 바운드가 발생하여 실행 이후에도 지연이 생깁니다. def cpu_bound_func(n..
Glue Glue란 무엇인가? ▶ Fully Managed ETL Service ▶ Consists of a Central Metadata Repository - Glue Data Catalog ▶ A spark ETL Engine ▶ Flexible Scheduler Why Glue? AWS Glue offers a fully managed serverless ETL Tool. This removes the overhead(추가적인 비용, 시간, 자원), and barriers to entry, when there is a requirement for a ETL service in AWS. Set Up ▶ S3 bucket 원하는 버킷을 생성하고, 연습할 csv 파일을 경로에 업로드한다. ▶ IAM role 역..
[#혼공] 혼자 공부하는 컴퓨터 구조+운영체제 [Chapter.08] 이번 장은 컴퓨터 구조의 마지막 내용입니다. 다소 우리에게 가장 익숙한 모니터, 키보드, 마우스 등과 같은 입출력 장치를 다룰 것입니다. 장치 컨트롤러와 장치 드라이버 개념을 통하여 다양한 외부 장치가 컴퓨터 내부와 어떻게 연결되고 소통되는 지를 알아보겠습니다. [08-1] 장치 컨트롤러와 장치 드라이버 장치 컨트롤러 장치 컨트롤러는 다소 다루기가 까다롭습니다. 그 이유는 종류가 너무나 많고, CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮습니다. 하여튼, 장치 컨트롤러의 역할을 구체적으로 확인해본다면 아래와 같습니다. 역할 (1) CPU와 입출력장치 간의 통신 중개 (2) 오류 검출 (3) 데이터 버퍼링 구조 (1) 데이터 레지스터 (2) 상태 레지스터 (3) 제어 레지스터 장..