분류 전체보기 185

컴퓨터공학 공부 다시 시작하기 13주차 - 가상 메모리를 위한 TLB 이해, 요구 페이징 개념 이해, 페이지 교체 정책 정리

1. 가상 메모리를 위한 TLB 이해MMU와 TLB(컴퓨터 구조)MMU- 물리 주소를 확인하기 위해 메모리를 갔다와야 하는 구조 -> 메모리 계층 구조상, 메모리에 접근하는 데 CPU 입장에선 상당한 시간이 걸림(예: 200 cycle)TLB- Translation Lookaside Buffer의 약어로, 페이지 정보를 캐쉬함 페이징 시스템과 공유 메모리(IPC)- 프로세스 간 동일한 물리 주소를 가리킬 수 있음: 공간 및 메모리 할당 시간을 절약하기 위함물리 주소 데이터 변경시- 물리 주소에 데이터 수정 시도시, 물리 주소를 복사할 수 있음 (copy-on-write)2. 요구 페이징 개념 이해요구 페이징(Demand Paging 또는 Demanded Paging)- 프로세스의 모든 데이터를 메모리로..

컴퓨터공학 공부 다시 시작하기 12주차 - 데드락과 스타베이션 개념 이해, 가상 메모리 개념 이해, 페이징 시스템 개념 이해

1. 데드락과 스타베이션 개념 이해데드락(Deadlock, 교착상태)- 무한 대기 상태: 두 개 이상의 작업이 서로 상대방 작업이 끝나기만 기다리고 있어 다음 단계로 진행하지 못함  (여러 프로세스가 동일 자원 점유)- 배치 처리 시스템에서는 일어나지 않는 문제- 프로세스, 스레드 둘다 이와 같은 상태가 일어날 수 있음- 휴대폰에서 특정 앱이 실행 중 동작이 안될 때 이유 중 하나  -> 이를 디버깅하기 위해 데드락에 대한 이해가 필요하며, 운영체제는 앱이 일정 시간 반응이 없으면 강제 종료시킴 스타베이션(Starvation, 기아상태)- 특정 프로세스의 우선순위가 낮아, 원하는 자원을 계속 할당 받지 못하는 상태- 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스가 영원히 자원 할..

컴퓨터공학 공부 다시 시작하기 11주차 - 스레드 동기화(Synchronization) 이슈 이해, 컴퓨터 공학 지식 기반 동기화 원인 이해, 동기화 이슈 해결 코드 작성 방법 이해

1. 스레드 동기화(Synchronization) 이슈 이해동기화 이슈란?- 동기화: 작업들 사이의 실행 시기를 맞추는 것- 여러 스레드가 동일한 자원(데이터)에 접근 및 수정 시 발생하며, 이는 각 스레드 결과에 영향을 줌2. 컴퓨터 공학 지식 기반 동기화 원인 이해3. 동기화 이슈 해결 코드 작성 방법 이해동기화 이슈 해결 방안: Mutual exclusion(상호 배제)- 스레드가 프로세스의 모든 데이터를 접근할 수 있다는 특성 때문- 여러 스레드가 변경하는 공유 변수에 대해 Exclusive Access 필요  => 즉, 어느 한 스레드가 공유 변수를 갱신하는 동안 다른 스레드가 접근하지 못하도록 막아야 함- 임계 자원(critical resource), 임계 영역(critical section)..

컴퓨터공학 공부 다시 시작하기 10주차 - 멀티 프로세스와 IPC 이해, 스레드 개념 이해, 스레드 장단점 정리

1. 멀티 프로세스와 IPC 이해프로세스간 커뮤니케이션(InterProcess Communication)- 기본적으로 프로세스는 다른 프로세스의 공간을 접근할 수 없다IPC(InterProcess Communication)- 프로세스 간 커뮤니케이션 하는 방법 -> 프로세스간 통신 방법 제공- 실제 프로세스 중 리눅스의 경우, 커널 공간은 공유하며 어떤 프로세스든 0~4GB의 메모리 주소를 가짐다양한 IPC 기법 - 모두 커널 공간을 사용하는 것 1. pipe 사용 - pipe와 message queue는 모두 kernel 공간의 메모리 사용2. Message Queue - 큐니까 기본은 FIFO 정책으로 데이터 전송(kernel 공간의 메모리 사용)3. Shared Memory(공유 메모리) - ker..

컴퓨터공학 공부 다시 시작하기 9주차 - 스케쥴링 알고리즘 구현 이해2, 프로세스 구조 이해, 힙과 컨텍스트 스위칭 이해

1. 스케쥴링 알고리즘 구현 이해2Round Robin 스케쥴러- 큐(queue) 자료구조를 활용하여 쉽게 구현 가능함 프로세스 상태 기반 스케쥴러- FIFO, Round Robin과 함께 기본적인 현대 스케쥴링 알고리즘 이해해보기- ready state: CPU에서 프로세스를 실행 가능한 상태(실행 대기 상태)- running state: 현재 CPU에서 프로세스를 실행 중인 상태- block state: 프로세스에서 특정 이벤트 발생 전 대기 상태프로세스 구조 이해프로세스 구성- text(CODE): 코드- data: 변수/초기화된 데이터- stack: 임시 데이터(함수 호출, 로컬 변수 등)- heap: 코드에서 동적으로 만들어지는 데이터프로세스와 컴퓨터 구조PC(Program Counter) + ..

컴퓨터공학 공부 다시 시작하기 8주차 - 운영체제 스케쥴링 기본, 스케쥴링 알고리즘 구현 이해 1

1. 운영체제 스케쥴링 기본시분할 시스템- 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템- 즉, 여러 사용자가 동시에 하나의 컴퓨터 사용 가능- Time Sharing이라고도 함 멀티 태스킹- 단일 CPU에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템- 10~20ms 단위로도실행 응용 프로그램이 바뀜[1000ms(밀리초) = 1초]멀티 프로그래밍 - 최대한 CPU를 효율적으로, 많이 활용하여 많은 연산 작업을 수행하도록 하는 시스템(스케쥴링 알고리즘)- 응용 프로그램은 CPU 외의 다양한 하드웨어 자원까지 사용메모리 계층 - 컴퓨터 구조 이해System Bus - 컴퓨터 구조 이해Wait- 저장매체로부터 파일 읽기를 기다리는 시간으로 가정멀티 태스킹과 멀티 프로세싱..

컴퓨터공학 공부 다시 시작하기 7주차 - 커널 모드와 사용자 모드 이해, 운영체제 역할 정리, 프로세스 개념 이해

1. 커널 모드와 사용자 모드 이해커널 모드와 사용자 모드- 함부로 응용 시스템이 전체 컴퓨터 시스템을 헤치지 못하게 함- 주민등록등본은 꼭 동사무소 또는 민원24시(정부사이트)에서 특별한 신청서를 써야 발급 단, 동사무소 직원들은 특별한 권한을 갖고 주민등록등본 출력 가능- 응용 프로그램 개발 시 운영체제 기능이 필요한 경우, 운영체제 별로 API를 사용해서 프로그램 작성 -> 프로그래밍 언어별 로 운영체제 지원 => 응용 프로그램 실행 시 해당 API를 호출하면, 시스템 콜을 호출한 뒤 커널 모드로 변경한 후 OS 내부에서 API 호출 명령이 실행되고, 응용 프로그램에 결과 리턴CPU Protection Ring- 커널 모드(kernel mode): OS가 사용- 사용자 모드(user..

컴퓨터공학 공부 다시 시작하기 6주차 - 운영체제 개념, 커널과 쉘 이해

1. 운영체제 개념운영체제란?- OS(Operating System): 커널(kernel)에 여러가지가 추가된 상태- 주요 운영체제: 원도우, UNIX 계열 OS(리눅스), MacOS- 사용자, 응용 프로그램, 운영체제, 컴퓨터 하드웨어와 관계운영체제를 만든다면?1. 운영체제를 개발한다.(kernel)2. 시스템콜을 개발3. 시스템콜 기반 프로그래밍 언어별 라이브러리 개발(API)4. 지원되는 프로그래밍 언어로 Shell 프로그램 개발5. 지원되는 프로그래밍 언어로 응용 프로그램 개발 2. 커널과 쉘 이해운영체제는 사용자 인터페이스 제공: 쉘(Shell)- 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램- 쉘은 터미널 환경(CLI)과, GUI 환경 두 종류로 분류- 유명..

컴퓨터공학 공부 다시 시작하기 5주차 - 레지스터와 프로그래밍 이해, CPU 파이프라인 이해, CISC/RISC CPU 이해와 컴퓨터 구조 정리

1. 레지스터와 프로그래밍 이해Instruction Set와 코드Software: Code+Data- Software Engineer: Code를 작성하는 사람- Machine language: CPU는 Instruction code를 만들어놓고 제공함- 컴파일: 프로그래밍 언어로 작성된 프로그램은 컴파일러를 통해 CPU가 제공하는 Instruction code를 기반으로 변환됨 - 이제부터는 하드웨어를 고려하지 않고 코드레벨에 집중OperationOperation CodeAssembly LanguageLoad10hLODStore11hSTOAdd20hADDSubstract21hSUbInstruction Code를 약자로 만들기라도 하면! LOD A, [1003h]- LOD는 10h의 Instruction..

컴퓨터공학 공부 다시 시작하기 4주차 - 64K 메모리 동작과 구성 이해, Accumulator(가산기) 동작과 구성 이해, 디지털 컴퓨터와 프로그래밍 이해

1. 64K 메모리 동작과 구성 이해8 x 1 RAM array- 8 x 1 RAM을 두 개 엮었을 때, Data In은 8 x 1 RAM에 별도로 입력이 들어감- Address와 Write는 두 8 x 1 RAM에 동일하게 입력이 들어감8 x 2 RAM array- 8개의 데이터를 저장하고 읽는데, 각 데이터는 2 bits16 x 1 RAM array- 8 x 2 RAM array 구조에, Select와 1-to-2 Decoder/2-to-1 Selector 추가- Select는 4번째 Address 역할을 함- 16개의 데이터를 저장하고 읽는데, 각 데이터는 1 bit m * n RAM array- 많은 데이터를 저장할 수 있음- 8 x 1 RAM을 여러 개 연결하고, 여러 개의 Select로 Dec..