블로그
전체 42024. 10. 13.
1
인프런 워밍업 클럽 스터디 2기 - CS 2주차 발자국
운영체제 1주차에 배웠던 것들을 바탕으로 깊숙하게 학습하는 것 같다.cpu 스케줄링에 대해 학습할 때 FIFO의 개념과 단점으로부터 점점 발전되는 SJF, RR, MLFQ 알고리즘이 등장한다.평소에 아무런 생각없이 사용했던 컴퓨터에 이러한 알고리즘이 적용됨을 알아간다는 것이 흥미로웠다.하지만 점점 기초지식이 아니기 때문에 5분짜리 강의라고 해도 두번 듣고 노션에 캡쳐하며 정리까지 하다보니 강의 시간의 3배는 걸리는 것 같다.그래도 그림과 함께 설명해주시니 이해가 잘 된다는 장점이 있기 때문에 놓치지 않고 꼼꼼히 필기하며 들어야겠다는 생각을 가진다.위 강의를 바탕으로 후에 정보처리기사에 도전해봐야겠다 자료구조와 알고리즘 작년에 프로그래밍 언어를 처음 배우면서 재귀함수가 정말 어려웠다.하지만 강사님의 꿀팁을 바탕으로 생각하다보니 이전보다 더 빠르게 코드를 이해하고 풀 수 있었다.정렬도 작년에 배우고 써먹지 않다보니 가물가물했었는데 강의를 통해 한번 더 리마인드 할 수 있었다.알고리즘을 들으면서 느끼는 건 꾸준함이 정말 중요하다 생각이 든다.작년에는 알고 있었지만 시간이 지나며 적용하지 않다보니 다 잊어버려 실무에 적용하지 못한다는 점이다. 강의를 들으면서 C#에도 적용해보고 잊지 않도록 리마인드하는 과정을 거쳐야겠다
발자국
2024. 10. 13.
1
인프런 워밍업 클럽 스터디 2기 - CS 2주차 미션
운영체제 Q. FIFO 스케줄링의 장단점이 뭔가요? 장점 : 단순하고 직관적단점 : 프로세스의 Burst Time에 따라 성능이 좌우됨, I/O 작업이 있다면 I/O 작업이 끝날 때 까지 CPU는 쉬기 때문에 CPU 사용률이 떨어짐 Q. SJF를 사용하기 어려운 이유가 뭔가요? 프로세스가 끝나는 시간을 예측할 수 없음만약 Burst Time이 짧은 프로세스가 계속 추가된다면 Burst Time이 긴 프로세스는 영영 실행되지 않을 수 있음 Q. RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요? 컨택스트 스위칭이 자주 발생하여 오버헤드가 커짐 Q. 운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요? CPU를 스스로 반납한다면 -> I/O Bound ProcessCPU를 강제로 빼앗긴다 -> CPU Bound Process Q. 공유자원이란 무엇인가요? 프로세스 간 통신을 할 때 공동으로 이용하는 변수나 파일들 Q. 교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요? 상후배제 - 어떤 프로세스가 리소스를 점유했다면 다른 프로세스에서 리소스를 점유할 수 없음비선점 - 다른 프로세스의 리소스를 빼앗을 수 없음점유와 대기 - 리소스 A를 가지고 있는 상태에서 리소스 B를 기다림원형 대기 - 점유와 대기를 하는 프로세스들의 관계는 원형을 이루어야 함 자료구조와 알고리즘Q. 재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요? 콜스택이 꽉 차서 에러가 발생함 Q. 0부터 입력 n 까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.
알고리즘 · 자료구조
・
미션
2024. 10. 06.
1
인프런 워밍업 클럽 스터디 2기 - CS 1주차 발자국
수강 방식전체적으로 강의 내용을 노션에 정리하며 수강(비공개 처리)강의 화면을 캡쳐하여 정리하고 코드를 따라치지만 단순 클론 코딩이 아닌 이해될 때 까지 넘어가지 않음) 운영체제 비전공자 출신에게 도움이 되는 내용들이었습니다. 프로세스, 쓰레드나 메모리, cpu등등 말로 듣고 글로 된 설명을 읽었을 때는 제대로 이해되지 않았던 부분들이 그림과 함께 학습하니 이해가 빠르게 되었습니다.외에도 프로그램이 어떤 흐름을 통해 실행되는지, 인터넷 창에서 생각없이 눌렀던 탭 추가 기능은 스레드를 추가함으로써 과도한 메모리 할당을 막는다는지 등등이 있었습니다.아직까지는 많은 내용을 보지 못했지만 남아있는 강의들을 수강한다면 실무에 도움이 크게 될거라 생각하여 열심히 수강해야 겠다는 생각을 가졌습니다. 자료구조와 알고리즘 C로 배우고 C#으로 개발하고 있는 나에게 자바스크립트는 익숙하면서도 낯선 언어였습니다. 다만 다뤄보았던 자료구조는 같았기에 이해가 어렵진 않았습니다.다만 연결리스트의 개념 이해와 구현은 조금 어려웠습니다.처음에는 head와 next가 뭔지 이해가 되지 않았으나 그림을 보고 코드를 따라치다보니 조금씩 이해가 되었던 것 같습니다.연결 리스트를 통해 큐, 스택, 덱 등등 자료구조들을 직접 구현해보는 점이 좋았고 현실에서 자료구조와 비슷한 경험을 빗대어 말씀해주시는게 좋았습니다.특히나 자료구조는 실무 개발에서도 적용할 수 있기 때문에 지금까지 배운 자료구조와 앞으로 배울 자료구조 및 알고리즘을 수강하면서 하나씩 적용해보고자 합니다.
발자국
2024. 10. 04.
0
인프런 워밍업 클럽 스터디 2기 - CS 1주차 미션
운영체제 위 코드는 1초 마다 플레이어가 스킬을 사용했는 지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능이 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?while(true){ wait(1); // 1초 멈춤 bool isActivated = checkSkillActivated(); // 체크 } 인터럽트 방식이벤트 형식 -> 입출력이 완료되면 CPU에게 신호를 보냄 -> 신호를 받은 CPU는 ISR을 실행시켜 작업을 완료함폴링 방식은 CPU가 입출력 관리자에게 주기적으로 확인함 -> 비효율적 프로그램과 프로세스가 어떻게 다른가요? 프로그램은 명령문의 집합체프로세스는 프로그램이 실행될 때 메모리 위에 올라간 것 -> 즉 실행 중인 프로그램(메모리와 CPU를 사용 중임)운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요? PCB 프로그램이 실행되고 프로세스가 만들어질 때 PCB가 함께 생성 PCB에는 해당 프로세스의 정보를 가지고 있는 자료구조(포인터, 프로세스 상태 등등)컨텍스트 스위칭이란 뭔가요? 프로세스를 실행하는 도중 다른 프로세스를 실행하기 위한 작업 다른 프로세스를 실행하기 위해 실행중인 프로세스A의 작업 내용을 PCB(A)에 저장이후 실행할 프로세스의 작업 내용이 담긴 PCB(B)를 토대로 CPU가 세팅됨자료구조 여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다.이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요?이유를 함께 적어주세요. 배열교실의 학생 정보 -> 크기가 정해져있음학생 정보를 저장하고 열람 -> 참조한다. 인덱스로 빠르게 접근이 가능하기 때문에 배열을 사용한다(O(1)의 성능을 가지고 있음) 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다.주문은 들어온 순서대로 처리됩니다.이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요. 큐들어온 순서대로 처리 -> 선입선출
미션
・
프로세싱
・
배열
・
연결리스트
・
큐