게시글
블로그
전체 42024. 10. 13.
1
[인프런 워밍업 클럽 2기 - CS] 2주차 발자국
학습 내용스케쥴링의 목표와 FIFO부터 MLFQ에 이르기까지 어떤 시행착오를 거쳐서 스케쥴링 방식을 진화시켜 왔는지 확인햇습니다.공유자원가 임계구역 ,세마포어 모니터 와 같이 프로세스 동기화 에 관해 공부했습니다.재귀의 기본과 하노이탑 , 버블/선택 정렬에 대해서 공부했습니다.회고강의를 들었다 해도 미션에 대해서는 다시 생각하고 강의를 들어서 답을 작성해야 했는데 복습의 중요성을 역시 느꼇습니다.미션미션은 강의를 복습하며 작성했습니다.회고질문에 대한 답을 생각하면서 강의를 다시 보고 답변을 작성하는 것에서 복습의 효과를 본 것 같습니다.
2024. 10. 13.
1
[인프런 워밍업 클럽 2기 - CS] 2주차 미션
운영체재FIFO 스케쥴링의 장단점?장점First In First Out으로 직관적이고 알기쉽다. 단점먼저 들어온 시간이 오랜 작업시간을 소요하는 경우 평균 대기시간이 길어진다.I/O 작업 같은 것도 다른 작업이 끝날 때 까지 다른 작업을 못하게 되어 사용률이 떨어진다.SJF를 사용하기 여러운 이유가 뭔가요?어떤 스케쥴이 먼저 실행되는지 예측하기 어렵다.소요시간이 긴 프로세스가 뒤로 밀려나는 현상이 생긴다. RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?타임슬라이스가 아주 작으면 컨텍스트 스위칭이 너무 자주 일어나서 오버헤드가 발생할 수 있다.운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?타임슬라이스를 조금씩 늘려서 프로세스를 실행시키는데 금방 종료된다면 I/O , 실행도중 타임슬라이스를 초과해 강제로 CPU를 뺏긴다면 CPU이다.공유자원이란무엇인가요?각 프로세스가 통신을 할 때 공동으로 사용하는 변수나 파일들을 말한다.교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?상호배제 : 어떤 프로세스가 리소스 점유시 그 리소스는 다른 프로세스 사용하지 못해야 한다. (리소를 점유하는 상황)비선점 : 프로세스가 점유한 리소스를 다른 프로세스가 빼앗을 수 없다. (사용중인 리소스를 빼앗을 수 없는 상황)점유와 대기 : 프로세스가 이미 리소스를 점유한 상태에서 추가적인 리소스를 요청해야 한다. (다른 리소스를 기다리는 상황)원형 대기 : 점유와 대기 관계가 원형으로 형성되어야 한다. (서로가 기다리는 상황)해야할까요? 자료구조와 알고리즘재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요? 함수가 무한히 실행되거나 의도치 않게 종료될 수 있음0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.function sumOdd(n) { if(n%2 == 0) { return sumOdd(n-1) } else { if(n==1) return 1; else return sumOdd(n-2)+n } } console.log(sumOdd(10))
2024. 10. 06.
1
[인프런 워밍업 클럽 2기 - CS] 1주차 발자국
학습 내용애니악 부터 시작하는 컴퓨터의 역사와 현재에 이르기까지 설명과 현재 컴퓨터의 구조로 발전하기 까지의 과정운영체재의 핵심인 커널(프로세스,메모리,저장장치를 관리)부터 사용자가 커널에 접근하기 위한 인터페이스 , 프로세스가 커널에 접근하기 위한 시스템 콜 , 하드웨어와 커널의 인터페이스인 드라이버가 있다.프로그램과 프로세스의 차이메모리의 관점에서 프로그램을 다중으로 실행시킨다는 의미인 멀티프로그래밍과 CPU 코어의 관점에서 프로세스를 여러개 돌리는 멀티프로세싱의 차이실행중인 프로세스에서 대기중인 다른 프로세스를 진행시키기 위해 현재 실행중인 프로세스의 상태를 저장하고 대기중인 프로세스의 상태를 가져와 CPU에 세팅하는 작업인 컨텍스트 스위칭시간복잡도의 정의배열,스택,큐,연결리스트해시테이블,셋의 개념과 구현회고 필요한 지식들에 대해 대략적인 개념들을 잡는 느낌이였습니다. 세부적인 내용에 대해서는 따로 공부해야 할 필요성을 느꼇습니다.미션미션은 강의를 복습하며 작성했습니다.회고질문에 대한 답을 생각하면서 강의를 다시 보고 답변을 작성하는 것에서 복습의 효과를 본 것 같습니다.
2024. 10. 03.
1
인프런 워밍업 클럽 CS 2기 1주차 미션
운영체제1.while(true){ wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 }위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?: 폴링방식은 CPU가 주기적으로 장치의 상태를 검사해야 하기 때문에 성능이 좋지 않습니다. 따라서 예외상황이 발생시 CPU에게 요청을 하는 인터럽트 방식을 사용하는 편이 좋습니다.2.프로그램과 프로세스가 어떻게 다른가요?==> 프로그램 : 프로그래머가 작성한 명령어들의 집합체==> 프로세스 : 프로그램이 메모리에 적재되어 실행중인 상태 , 프로세스는 메모리와 CPU를 사용하며 CODE영역,STACK영역,HEAP영역 , STACK영역으로 나뉘어진다.3. 멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?==>멀티프로그래밍 : 멀티프로그래밍은 메모리에 여러 프로세스를 적재하여 실행시키는것을 멀티프로그래밍이라 한다.==>멀티프로세싱 : CPU가 여러개의 프로세스를 처리하는것을 의미한다. 4. 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?==> PCB(Process Control Block)을 사용한다. PCB는 프로세스가 생성될 때 운영체재가 생성하여 포인터,프로세스 상태 , 스케쥴링 정보 , 프로그램 카운터 , 레지스터 정보 등을 가지고 있다.5. 컨텍스트 스위칭이란 뭔가요?==> 컨텍스트 스위칭이란 CPU를 사용중인 프로세스를 중단하고 다른 프로세스로 교체할 때 실해중이던 프로세스의 상태를 저장하고 다른 프로세스의 상태를 불러오는 작업을 말한다. 자료구조 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다. 이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요?이유를 함께 적어주세요. ==> 교실의 학생정보같은경우 만약 주소 , 나이 , 성별 등 자주 변경될일 없는 정보들이 저장되는 학생정보인 경우 배열을 사용할 것이고 , 성적이나 주간으로 자주 변경해야 하는 내용들이 저장되어 있는 정보들이 라면 수정에 용이한 링크드리스트를 사용할 것입니다. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.==> 순서대로 처리하기위해서는 먼저들어온 데이터가 먼저 처리되는 FIFO방식인 Queue를 사용할 것 같습니다.