bbcc
수강평 작성수
-
평균평점
-
블로그
전체 4
2024. 10. 13.
0
인프런 워밍업 클럽 스터디 2기 CS 2주차 발자국
회고: 운영체제에서 CPU 스케줄링과 프로세스 동기화 등에 대해 알차게 학습한 이번주. 알고리즘은 강의에 맞춰, 따로 문제를 더 풀어보고자 했는데 그러진 못했다.하지만 집에 밤 혹은 자정 넘어 오는 수많은 야근 속에서도 강의를 밀리지 않고 꾸준히 들은 나를 스스로 칭찬해본다. 다음주도 꾸준히 해보기. 운영체제 간단 요약 선입 선처리 스케줄링- FIFO 알고리즘- '평균 대기 시간'이 길어질 수 있음- 현대 운영체제에 안쓰이고 에 쓰임 SJF 최단 잔여 시간 우선 스케줄링- Burst time이 짧은 것부터 우선 실행- SJF 사용하기 어려운 이유?(1) 어떤 프로세스가 얼마나 실행될 지 예측하기 힘들다(2) Burst time이 긴 프로세스는 아주 오랫동안 실행되지 않을 수 있음 RR 라운드 로빈 스케줄링- 한 프로세스가 할당 받은 시간(타임 슬라이스)동안 작업을 하다가,완료하지 못하면 준비 큐의 맨 뒤로 가서 자기 차례를 기다리는 방식- 동시에 실행하는 거처럼 + 오버헤드가 크지 않은 타임 슬라이스여야 함. ✔ 공유 자원: 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등✔ 경쟁 조건: 여러 프로세스가 공유 자원을 병행해서 읽거나 쓰는 상황 ✔ 임계구역 Critical section: 공유 자원 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역: 임계구역 문제 해결조건 중 1. 상호 배제(1) 임계영역엔 동시에 하나의 프로세스만 접근한다.(2) 동시에 여러 요청이 와도 하나의 프로세스의 접근만 허용한다.(3) 임계구역에 들어간 프로세스는 빠르게 나와야 한다. 세마포어 Semaphore 하드웨어적 해결방법, 피터슨, 데커 알고리즘 3개는 busy wating을 사용하기 때문에 자원 낭비도 심하고 알고리즘도 복잡하다.세마포어는 임계구역(critical section)에 진입하기 전에 스위치를 사용 중으로 놓고 임계구역으로 들어간다. 모니터 세마포어의 문제는 잘못된 사용으로 인해, 임계구역이 보호받지 못한다는 것이다.모니터는 프로시저 호출에 대해서 동기화하여 안전하게 공유 자원을 사용할 수 있도록 돕는다.프레임워크나 라이브러리 차원에서 제공한다. 데드락(Deadlock, 교착 상태) 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황 알고리즘 간단 요약 선택정렬해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 그 위치에 어떤 원소를 넣을지 선택하는 알고리즘 버블정렬배열 내의 두개의 인접한 Index를 비교하여 더 큰 숫자를 뒤로 보내 차곡차곡 쌓아 정렬하는 방법. 배열의 뒷쪽부터 정렬하는 알고리즘.

2024. 10. 10.
1
인프런 워밍업 클럽 스터디 2기 CS 2주차 과제
운영체제1. FIFO 스케줄링의 장단점이 뭔가요?장점: 모든 프로세스가 실행될 수 있고, 스케줄링이 단순하다.단점: '평균 대기 시간'이 길어질 수 있음 (프로세스들이 기다리는 시간이 매우 길어질 수 있다) 2. SJF를 사용하기 어러운 이유가 뭔가요?어떤 프로세스가 얼마나 실행될 지 예측하기 힘들다.Burst time이 긴 프로세스는 아주 오랫동안 실행되지 않을 수 있다. 3. RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?타임 슬라이스가 아주 작으면, 컨텍스트 스위칭이 너무 자주 일어난다. 따라서 오버헤드가 너무 커진다. 4. 운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?CPU Bound Process: CPU 연산, CPU 사용률과 처리량 우선순위타임 슬라이스를 크게 줌I/O Bound Process: 대부분 시간은 I/O(CPU 사용률 적음),응답 시간이 우선 순위타임 슬라이스를 작게 줌 5. 공유자원이란 무엇인가요?여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등 6. 교착상태(데드락)에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?상호 배제(Mutual Exclusion)자원은 한 번에 한 프로세스만이 사용할 수 있어야 한다.점유 대기 (Hold and Wait) 이미 자원을 사용중인데, 다른 프로세스가 사용 중인 자원을 사용하기 위해 대기하고 있는 상태의 프로세스가 존재해야 한다. 비선점 (No preemption)다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다. 순환 대기 (Circular wait)대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 한다. 자료구조와 알고리즘 1. 재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?기저 조건 (재귀 함수를 멈추는 조건) 을 잘못 설정하면 무한루프에 빠지게 된다. 이로 인해 스택 메모리가 터져 오버플로우가 일어난다. 2. 0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요. function sumOdd(n) { if (n

2024. 10. 06.
0
인프런 워밍업 클럽 스터디 2기 CS 1주차 발자국
회고이미 어느 정돈 알고 있다고는 생각해도, 강의를 들으며 복습 겸 몰랐던 부분을 추가로 알 수 있어 좋았다.운영체제와 자료구조 모두, 실무에서도 알고 구현하는 것과 모르고 구현하는 것은 차이가 있기 때문에 주기적으로 공부해야 한다.특히 운영체제도 그렇고. 일부 도메인 실무에서 종종 쓰이는 락프리 알고리즘을 구현할 때 사용되는 것의 기본이 큐 자료구조라(스택으로도 구현이 가능하나 대부분 글로벌 큐를 사용하니), head에 이어 tail이 왜 필요한지 등을 놓치지 않고 설명해주셔서 좋았다. 운영체제 간단 요약 - 인터페이스 통해 접근: 사용자의 직접 접근 불가- GUI: 그래픽으로 된 인터페이스 / CLI: 텍스트로 상호작용- 어플리케이션: 시스템 콜(인터페이스)을 통해 하드웨어 접근 1. 제어 장치- 모든 장치들의 동작을 지시하고 제어2. ALU(산술논리 연산장치)- 실질적인 연산을 담당3. 레지스터- CPU 내에서 계산을 위해 임시로 보관하는 장치 [인터럽트]- 폴링 방식의 문제 해결- 입출력 작업이 들어오면 입출력 관리자에게 명령을 내림- ISR 인터럽트 서비스 루틴: 특정 인터럽트가 들어오면 이를 처리하는 함수.- 비공기적으로 동작하기 때문에 성능에 이점 1. ROM에 저장된 바이오스 실행2. 바이오스는 전원, CPU, 메모리, 키보드, 하드디스크 등주요 하드웨어에 이상이 없는지 체크 (이상 있으면 부팅 X)3. 바이오스가 부트로더-Ex.Window Boot Manager-를 메모리로 가져와서 실행- 운영체제가 2개 이상 설치되어 있다면 어떤 운영체제 선택할지 나옴4. 바이오스가 운영체제 메모리로 불러오고,응용 프로그램은 메모리에 올라와서 운영체제가 관리 PCB(Process Control Block)- 프로세스가 만들어지면 운영체제는해당 프로세스의 정보를 가지고 있는 PCB를 만들고 저장- PCB는 연결리스트: 운영체제는 프로세스가 종료되면연결리스트에서 해당 프로세스의 PCB를 제거한다 1. 생성: 프로세스 생성 - 빈 스택, 빈 힙 등을 만들어 공간 확보,PCB 만들어서 값을 초기화2. 준비 (대부분의 상태): CPU 할당 대기3. (대기): 실행 일시 중지4. 실행 : 스케줄러 선택5. 완료: PCB 제거 프로세스01 인터럽트 발생 =>현재 CPU의 레지스터 값 등을 현재 프로세스01 PCB에 저장=> 타 프로세스02가 CPU를 사용하다가, 점유 시간이 다 되면운영체제는 다시 인터럽트를 발생 시킴 프로세스: 서로 독립적, 안정성- 프로세스 간에는 IPC 통신이 필요스레드: 공유되는 공간에서 문제가 생길 수 있음,스택영역 제외 공유 가능 - 오버헤드 적음 1. 리소스 사용률2. 오버헤드 최소화3. 공평성4. 처리량 증가5. 대기시간 최소화6. 응답시간 최소화 자료구조 간단 요약 연결 리스트(Linked List)노드(Node)라는 요소들이 포인터를 통해 서로 연결되어 있는 자료구조스택(Stack)후입선출(LIFO, Last In First Out) 구조큐(Queue)선입선출(FIFO, First In First Out) 구조해시 테이블(Hash Table)키(Key)와 값(Value) 쌍으로 데이터를 저장셋(Set)데이터의 중복을 허용하지 않는 자료구조

2024. 10. 03.
0
인프런 워밍업 클럽 스터디 2기 CS 1주차 과제
**운영체제**1.while(true) { wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 }위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다.이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다.이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?: 인터럽트 방식 2. 프로그램과 프로세스가 어떻게 다른가요?프로그램: (컴퓨터가 이해할 수 있는) 명령문의 집합체프로세스: 실행 중인 프로그램 3. 멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?멀티프로그래밍: 메모리에 여러 개의 프로세스 올라온 것.CPU 사용률을 극대화 시키는 것이 목적.멀티프로세싱: 여러 CPU 코어나 프로세서를 사용하여 동시에 여러 작업을 처리하는 것 4. 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?: 정보를 관리하기 위해 프로세스 제어 블록(PCB)을 사용합니다. 프로세스ID, 레지스터 값, 프로세스 상태 등이 저장되어 있습니다. 5. 컨텍스트 스위칭이란 뭔가요?운영 체제가 한 프로세스에서 다른 프로세스로 CPU 할당을 전환하는 과정.기존 프로세스 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것.여러 프로세스가 CPU를 번갈아가며 사용하는 '멀티 태스킹' 과정에서, 프로세스끼리 작업이 스위칭되는 것. **자료구조**1. 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다. 이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요. : 배열. 교실에 있는 총 학생의 수는 예측이 가능하고저장, 열람 기능만 필요하다면 데이터의 삽입/삭제가 이루어지지 않음. 2. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다.주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.: 선입선출(FIFO) 구조를 가진 '큐'를 선택하겠습니다.




