스터디 7

[인프런 CS 전공지식 스터디 3기_운영체제] 5. 데드락

데드락(교착상태)여러 프로세스가 서로의 작업 종료를 기다리다 모두 작업을 진행하지 못하는 상태 : 교착상태공유자원이 원인 교착상태의 필요조건1. 상호배제프로세스가 한 리소스를 점유한 상태에서 다른 프로세스에게 공유 불가한 상태2. 비선점다른 프로세스가 점유한 공유자원을 빼앗을 수 없는 상태3. 점유와 대기공유자원을 점유한 상태에서 다른 공유자원을 점유하고 싶어 하는 상태4. 원형 대기점유와 대기 상태의 프로세스들이 원형을 이룬 상태 교착상태의 예방은 제약이 많고 비효율적.이 대신 교착상태에 빠졌을 때 해결하는 방법을 연구.   데드락 해결교착상태 회피 (예방)프로세스들에게 어느 정도 자원을 할당해야 교착상태가 발생하는지 파악→ 교착상태가 발생하지 않는 수준의 자원 할당 전체 자원의 수 & 할당된 자원의 ..

[인프런 CS 전공지식 스터디 3기_운영체제] 4. 프로세스 동기화

프로세스 간 통신프로세스는 다른 프로세스와 데이터를 주고받으며 통신을 하는 경우도 있음동일 컴퓨터 내의 프로세스/다른 컴퓨터 내의 프로세스와 네트워크를 통한 방법 1. 동일 컴퓨터 내의 프로세스파일/파이프 이용 파일통신을 하려는 프로세스들이 하나의 파일을 읽고 쓰는 방법 파이프운영체제가 생성한 파이프를 통해 데이터를 읽고 쓰는 방법  2. 쓰레드 간 통신한 프로세스 내의 쓰레드 간 통신 방법코드, 데이터, 힙 영역을 공유하기 때문에 데이터, 힙 영역을 이용하여 통신 가능 3. 네트워크를 이용한 방법운영체제가 제공하는 소켓통신 / RPC(원격 프로시저 호출) 통신   공유자원과 임계구역공동으로 이용하는 변수나 파일 : 공유자원공유자원은 프로세스들의 접근 순서에 따라 결과가 달라질 수 있음컨텍스트 스위칭으로..

[혼자 공부하는 컴퓨터구조와 운영체제] 4_CPU의 작동 원리

💡ALU와 제어장치레지스터의 종류와 역할명령어 사이클의 이해인터럽트의 개념 1) ALU와 제어장치ALU받는 정보레지스터를 통해 피연산자제어장치로부터 수행할 연산을 알려주는 제어 신호내보내는 정보연산 수행 결과연산 수행 결괏값 → 일시적으로 레지스터에 저장 (프로그램 실행 속도를 위해)플래그연산 결과에 대한 추가적인 상태 정보플래그 레지스터에 저장부호 플래그제로 플래그캐리 플래그오버플로우 플래그인터럽트 플래그슈퍼바이저 플래그 제어장치제어 신호를 내보냄, 명령어 해석 부품제어 신호: 컴퓨터 부품들을 관리/작동시키는 일종의 전기 신호 받는 정보클럭 신호클럭: 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위해석해야 할 명령어명령어 레지스터로부터 받아 해석 → 제어 신호 발생시킴플래그 레지스터 속 플래그 ..

[인프런 CS 전공지식 스터디 3기_운영체제] 3. CPU스케줄링

CPU스케줄링 개요필수장치인 CPU 프로그램 실행 → 메모리에 프로세스 생성 → 프로세스는 1개 이상의 쓰레드를 가짐 → 프로세스는 CPU를 차지하기 위해 OS의 명령 기다림 → OS가 모든 프로세스에게 CPU를 할당/해제 (CPU스케줄링) 스케줄러(OS)가 고려해야 할 사항어떤 프로세스에게 CPU 리소스를 줘야하는가?할당받은 프로세스는 얼마의 시간 동안 CPU를 사용해야 하는가? →  컴퓨터의 성능에 매우 큰 영향.  CPU를 할당받아 실행하는 작업: CPU Burst입출력 작업: I/O Burst 다중큐프로세스의 상태 중 준비상태와 대기상태는 자료구조 큐로 관리됨 프로세스의 준비상태 → OS가 해당 프로세스의 우선순위를 판단하여 PCB를 준비 큐에 넣음 → CPU스케줄러에 의해 실행상태로 전환 프..

[혼자 공부하는 컴퓨터구조와 운영체제] 3_명령어

챕터3_명령어💡고급 언어와 저급 언어의 차이 이해컴파일 언어와 인터프리터 언어의 차이 이해명령어를 구성하는 연산 코드와 오퍼랜드명령어의 주소 지정 방식소스코드와 명령어 고급 언어와 저급 언어고급 언어사람을 위한 언어.대부분의 프로그래밍 언어. 소스코드.저급 언어컴퓨터가 직접 이해하고 실행할 수 있는 언어.명령어로 이루어짐.→ 고급 언어인 소스코드가 실행되기 위하여 저급 언어인 명령어로 변환 필요 저급 언어기계어0과 1의 명령어 비트로 이루어진 명령어 모음십육진수로도 표현어셈블리어오직 기계만을 위한 기계어를 사람이 읽기 편한 형태로 번역한 저급 언어프로그램의 절차를 가장 근본적인 단계부터 추적, 관찰 가능 컴파일 언어와 인터프리터 언어고급 언어가 저급 언어로 변환되는 방식 2가지 컴파일 언어컴파일러에 의..

[혼자 공부하는 컴퓨터구조와 운영체제] 2_데이터

챕터2_데이터 💡컴퓨터가 이해하는 정보 단위 이해하기.0과 1로 다양한 숫자를 표현하는 방법 이해.0과 1로 다양한 문자를 표현하는 방법 이해.0과 1로 숫자를 표현하는 방법 정보 단위비트 (bit) : 0과 1을 나타내는 가장 작은 정보 단위바이트 (byte) : 8bit킬로바이트 (kB) : 1000byte메가바이트(MB) : 1000kB기가바이트 (GB) : 1000MB테라바이트 (TB) : 1000GB워드 (word)하프 워드 (half word)풀 워드 (full word)더블 워드 (double word)워드 크기가 큰 CPU는 한 번에 처리할 수 있는 데이터가 많음.대부분 32bit/64bit.CPU가 한 번에 처리할 수 있는 데이터 크기 이진법0과 1만으로 모든 숫자를 표현하는 방법이진수..

[혼자 공부하는 컴퓨터구조와 운영체제] 1_컴퓨터 구조 시작하기

동기들과 함께 스터디를 시작하게 되었다!🥰학부 컴퓨터공학 부전공 시절, 컴퓨터구조 수업 듣는 게 너무 힘들었다. 당시 프로그래밍 언어를 제대로 공부했다고 할 만한 수준도 아니었기 때문에, 더 힘들었다고 생각한다. C에서 C#을 지나 C++을 배우며 공부하니, 로우레벨 시스템들에 대한 이해가 더욱 필요하다고 느꼈고, 다시 한번 컴퓨터구조 교재를 펼치게 되었다.  챕터1_컴퓨터 구조 시작하기💡컴퓨터 구조를 왜 알아야 할까?컴퓨터 구조의 큰 그림 그리기.컴퓨터 구조를 알아야 하는 이유문제 해결컴퓨터 구조를 이해하여 문제 상황을 빠르게 진단.다양하게 문제 해결의 실마리 탐색.+개인 의견) 디버깅뿐만 아니라 트러블슈팅이 가능한 개발자가 되기! 성능, 용량, 비용프로그램을 위한 최적의 컴퓨터 환경 판단.성능, ..