블로그
전체 72024. 11. 04.
2
인프런 워밍업 클럽 2기 CS 후기 및 오프라인 수료식 후기
인프런 워밍업 클럽이 끝났습니다한달간의 여정이 끝났네요오프라인으로 수료식을 한다기에 냉큼 달려갔습니다어떤 분들과 같이 스터디를 했는지 궁금했기 때문이죠 이번에 판교를 처음 가봤습니다지하철로 판교역까지 가서 한 20분 걸으면 목적지가 나옵니다판교 구경도 할 겸 좀 걸어봤습니다 판교테크노스타트업캠퍼스 3층 인프랩에 도착해서 이름표 받고 들어갔습니다올 때까지는 조용했는데 인프랩에 들어가고 나니 와글와글 하더라구요많은 분들이 오셨는데 저는 아는 얼굴도 없고 파워I라서 일단 조용히 앉아있었습니다(사람 많은 곳을 갔을 때 흔한 I의 모습) 간단한 식사로 피자와 음료가 제공되었어요알콜/논알콜 음료로 구분되었는데 저는 알콜 음료를 집었습니다이때 아니면 회사에서 언제 알콜을 마셔보겠습니까ㅎㅎㅎ스터디 종류에 따라 회의실에 모여서 네트워킹을 진행했어요저는 CS스터디를 들었기 때문에 CS 스터디원들이 모인 곳으로 갔습니다회의실 이름이 볼드모트인가... 암튼 그랬습니다저 혼자 알콜 먹나 했는데 한 분 더 있어서 서로 위안이 되었습니다먼저 간단하게 자기소개부터 시작했는데 백엔드와 프론트엔드 분들이 많더군요AI는 저 혼자더라구요... AI스터디로 열어줘요....현업에 계신 분들도 많아서 오 신기하다하고 그분들이 얘기를 들었죠고등학생 분도 있었는데 벌써 진로를 정하고 움직이다니 대단하다고 생각했습니다 네트워킹 이후에는 온라인 접속자들과 함께하는 Q&A 시간이 진행되었습니다질문들 중에서 주요 질문 5개만 감자님이 뽑아서 답변을 해주셨습니다 Q&A까지 마치고 다시 모든 참여자들이 한자리에 모였어요코치분들 소개가 진행된 후 스터디별로 우수러너 시상이 진행되었어요CS스터디가 가장 마지막 발표라서 옆에 앉은 분이랑 이런저런 이야기하고 있었는데 놀랍게도 옆에 분과 제가 우수러너로 발표되었어요되면 좋겠는데... 안되면 슬프겠지만 어쩔 수 없지...의 마인드였는데 받으니까 좋았습니다우수러너 혜택으로 인프런 한정판 굿즈와 1:1멘토링권이 주어졌어요에코백 안에 유리컵이랑 우산이랑 미니미한 뱃지가 들어있었는데 굉장히 귀엽습니다우수러너가 되길 너무 잘한 것 같아요(초록초록한 캐릭터 너무 귀엽습니다)(가슴팍에 새겨진 깨알같은 인프런 워밍업클럽. 이런 디테일을 제가 아주 좋아합니다) 아무튼 이렇게 인프런 워밍업 스터디가 진짜 끝났습니다뭔가 시원섭섭하고 그러네요다음번에는 어떤 스터디가 열릴지 기대됩니다AI 스터디도 열렸으면 하는 바램이 있습니다^^수료식 준비하신 스탭분들과 코치님들 모두 고생많으셨습니다다음에 기회가 되면 또 만나요~~
워밍업클럽
・
CS스터디
・
수료식
2024. 10. 20.
3
[인프런 워밍업클럽 CS 2기] 3주차 발자국
드디어 스터디의 마지막 발자국을 작성하는 날이 왔습니다. - 이번주에 공부한 내용의 키워드 - 운영체제컴파일과 프로세스메모리-레지스터, 캐시, 메인메모리, 보조저장장치절대주소/상대주소가변분할/고정분할가상메모리동적주소변환세크멘테이션 분할방식/페이징 분할 방식스레싱/워킹셋여러가지 주변장치(입출력 디바이스와 저장장치)하드디스크파일과 파일시스템디렉토리디스크 자료구조와 알고리즘버블/선택/삽입/병합/퀵 정렬동적 프로그래밍(메모이제이션/타뷸레이션) - 이번주에 공부한 내용 요약 - 운영체제메모리는 가장 빠른 레지스터, 데이터 임시 저장하는 캐시, RAM이라 불리는 메인메모리, 그리고 보조기억장치가 있습니다. 물리주소는 말 그대로 물리적인 메모리 주소이고 논리주소는 사용자 관점에서 본 상대적 주소입니다. 메모리 할당방식으로는 가변분할방식과 고정분할방식이 있습니다. 현대에서는 두 가지 방식을 모두 사용하여 단점을 최소화하는 버디시스템을 사용합니다.가상메모리는 컴퓨터의 물리적 메모리의 크기를 확장하기 위해 사용되는 기술입니다. 동적주소변환은 메모리관리자가 가상메모리의 논리주소를 물리주소로 변환하는 것을 의미합니다.논리주소를 물리주소로 변환할 때 세그멘테이션 분할 방식은 메모리 관리자가 논리주소를 세그멘테이션 테이블을 이용해 물리주소를 찾고, 페이징 분할 방식은 논리주소를 페이지 테이블을 이용해 물리주소를 찾습니다.프로세스가 가상메모리에 접근요청 했을 때 물리메모리에 데이터가 없다면 페이지 폴터라는 인터럽트가 발생합니다. 이 때 HDD의 스왑영역에 있는 데이터를 메모리에 올리는 작업이 수행됩니다.스레싱은 페이지폴트가 발생해서 CPU사용률이 0에 가깝게 떨어지게 되는 현상을 의미합니다. 워킹셋은 메모리에 올라온 페이지를 하나의 세트로 묶어 메모리에 올리는 것을 의미합니다.주변장치들은 메인보드에 있는 버스로 연결되어 있으며 두 개의 채널과 두개의 버스로 구분합니다.파일관리자는 운영체제가 파일을 관리하기 위해 필요한 존재입니다. HDD나 flash memory는 블록 디바이스로 전송단위가 블록이지만 사용자는 바이트 단위로 파일에 접근해야 해서 파일관리자가 중간에서 관리해야합니다.파일은 순차파일구조, 직접파일구조, 인덱스파일구조가 있습니다.관련있는 파일을 모아두기 위해 필요한 것이 디렉토리입니다. 자료구조와 알고리즘정렬에는 크게 5가지 방식이 있습니다간단해서 구현은 쉽지만 성능은 좋지 못한 버블, 선택, 삽입 정렬과 이들보다 상대적으로 성능이 좋은 병합정렬과 퀵정렬이 있습니다.동적프로그래밍 방식으로 메모이제시녀과 타뷸레이션이 있습니다.메모이제이션은 계산결과를 기억하며 재귀를 사용합니다. 하향식 계산방식입니다.타뷸레이션은 계산에 필요한 모든 값을 계산하여 테이블에 저장하고 상향식 계산방식입니다.- 이번 주 회고 겸 스터디 회고 - 눈 깜짝할 사이에 스터디 마지막이 되었습니다. 완주를 위해 달려왔는데 목적했던 바를 이루어서 뿌듯합니다. 개인적으로 따로 다른 분들과 스터디를 했는데 운이 좋게도 열정적이고 좋은 분들을 만나 복습과 완강을 함께 할 수 있었습니다. 일주일에 세번씩 꾸준하게 디스코드 상에서 스터디를 했는데 아주 만족스러웠습니다. 덕분에 허물뿐인 완강이 아니라 제대로 공부하면서 완강을 하게 되었어요.이번주에는 중간점검도 있었는데 그 때 감자님께서 회고를 읽어보신다는 것을 알았습니다. 그동안 너무 주저리주저리 길게 쓰는 것은 지양해야겠다고 생각했는데 그냥 길~게 쓸걸 하는 아쉬움이 있습니다. 짧아서 심심하셨겠다는 생각이 드네요. 이번주 회고는 마지막인만큼 좀 분량 있게 써보겠습니다. 일단 이 CS스터디를 신청한 이유는 '그래도 개발의 길을 걷는 사람이 CS지식도 모르다니! 이럴 수는 없다!'는 마음이 있었기 때문입니다. 기본 지식은 쌓아야 한다는 생각이 강했어요(제가 운영체제 과목을 들은 적이 없습니다..^^;;). 그래서 제가 자주 하는 '일단 신청하자'를 시전했습니다. 왜 하필 이 강의를 선택했냐고 물으신다면 답은 하나입니다. 재미있어 보여서요. 저는 도파민중독자입니다. 일단 재미가 있어야 뭔가를 시작합니다. 감자님 강의를 보는데 애니메이션으로 설명하는 것이 너무 재미있어 보였어요. 이전에 '아 지금 공부하는 게 눈으로 보이면 좋겠다...'라는 생각을 했는데 이 강의가 딱 이 생각에 맞아버린 것이죠. 애니메이션으로 공부하니 재미있고 재미있으니 더 공부하고 싶고... 이런 선순환이 반복되어 어느덧 완강이라는 종착지에 다다르게 된 것입니다. 스터디원들과 스터디를 하다보니 발표자료도 만들게 되었는데 발표자료 만드는 것도 많은 정성을 기울였습니다. 남에게 보여야 하는 것인데 허접하게 만들 수는 없잖아요. 처음에는 노트앱에 기본으로 있는 템플릿을 썼는데 그 템플릿이 너무 마음에 들지 않았어요. 맘에 안들면 제가 만들면 됩니다(자급자족 라이프!). 그래서 만들어진 것이 '감자전용 템플릿'입니다. 귀엽게 디자인이 뽑혔고 이렇게 만든 템플릿 덕분에 스터디를 재미있게 할 수 있었던 것 같습니다. 강의 들으면서 1차적으로 적은 야생의 거친 필기를 이 템플릿으로 더 잘 정리하려는 마음에 한 파트 정리하는데 시간이 좀 많이 걸린다는 소소한 단점이 있기는 합니다... 그렇지만 이렇게 정리한 것이 나중에 복습할 때 도움이 크게 될 것이라 믿어 의심치 않습니다.적다보니 길어졌네요. 스터디가 끝나니 아쉬움이 남기는 합니다. 다음에도 이런 스터디가 또 열렸으면 좋겠어요. 저번에 들어보니 컴퓨터구조 강의도 준비하신다던데.... 그때 한번 또 스터디가 열렸으면 하는 소소한 바램이 있습니다. 이번에 들은 내용들 복습하면서 더 심화적인 내용도 개인적으로 공부해야겠습니다. 좋은 강의 감사하고 다음에 또 뵐 기회가 있으면 좋겠습니다.
운영체제
・
자료구조
・
CS
・
워밍업클럽
・
스터디
2024. 10. 20.
4
[인프런 워밍업클럽 CS 2기] 3주차 미션
마지막 3주차 미션! 시작합니다 운영체제메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.레지스터 - 가장 빠른 기억장소로 CPU에 있어요. 휘발성 메모리입니다.캐시 - 레지스터와 메인 메모리 사이에 있는 휘발성 메모리입니다. 메인메모리에 있는 데이터를 미리 저장합니다.(메인)메모리 - 실제 운영체지와 다른 프로세스들이 올라가는 공간으로 휘발성 메모리입니다.보조기억장치(하드디스크,SSD) - 가격이 (상대적으로) 저렴하며 비휘발성메모리입니다. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?경계 레지스터가 있어서 사용자 프로세스가 메모리의 운영체제 영역에 침범하게 되면 프로세스를 강제종료 시킬 수 있어요. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?가변분할 방식은 프로세스 크기에 맞는 메모리공간을 할당하는 방식입니다.내부단편화는 일어나지 않는다는 장점이 있지만 외부단편화가 발생할 수 있다는 단점이 있어요.고정분할 방식은 프로세스 크기에 상관없이 정한 크기만큼 공간을 할당하는 방식입니다.구현이 간단하고 오버헤드가 발생하지 않지만 내부단편화가 발생할 수 있다는 단점이 있어요. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?스레싱이라고 합니다. 메모리 부족으로 페이지 폴트가 많이 발생하게 되어 대부분의 시간에 스왑을 하게 되는 현상입니다. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?이유를 함께 적어주세요.꼭 필요하다고 할 수는 없습니다. 일반적으로 HDD나 SSD에 운영체제를 설치하고 컴퓨터 부팅할 때 불러와서 동작을 합니다. 그러나 HDD나 SSD에서만 이러한 동작을 할 수 있는 것은 아니기 때문에 꼭 필요하지는 않습니다. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?파일을 삭제하게 되면 파일시스템은 파일의 모든 정보를 지우는 것이 아니라 파일테이블의 헤더를 삭제하고 free block list에 추가합니다. 사용했던 블록을 이 리스트에 추가하기 때문에 사용했던 블록의 데이터는 그대로 남아있게 됩니다. 그렇기 떄문에 포렌식으로 파일을 복구할 수 있는 것입니다. 자료구조와 알고리즘지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.버블정렬, 선택정렬, 삽입정렬위 세 정렬은 구현이 쉽고 직관적이지만 성능이 좋지 않습니다.(O(n^2))병합정렬큰 문제를 작은 문제로 쪼개서 해결하기 때문에 성능이 좋습니다(O(nlogn). 그러나 정렬할 배열을 넣을 메모리가 필요하다는 것이 단점입니다.퀵정렬공간효율적이고 캐시친화적이며 병렬화도 가능합니다. 정렬 알고리즘 중 우수한 성능을 보입니다.(O(nlogn)에 근접한 성능)그러나 피벗을 잘못 선택한다면 성능이 저하되어 최악의 경우 성능이 O(n^2)이 될 수도 있습니다. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요. 재귀로 쉽게 구현할 수 있다면 메모이제이션이 좋지만 메모이제이션은 메모리를 많이 사용한다는 문제가 있습니다. 메모리가 부족한 이슈가 있기 때문에 결과적으로는 타뷸레이션을 사용할 것 같습니다.
cs
・
자료구조
・
운영체제
・
미션
2024. 10. 13.
1
[인프런 워밍업클럽 CS 2기] 2주차 미션
2주차 미션 시작합니다. 운영체제FIFO 스케줄링의 장단점이 뭔가요?FIFO 스케줄링은 스케줄링 큐에 들어온 순서대로 CPU를 할당받는 방식입니다.장점단순하고 직관적입니다.(들어온 순서대로 실행되고 나가면 끝!)단점실행시간이 짧은데 늦게 온 프로세스는 실행시간이 길고 먼저 온 프로세스를 기다려야 합니다. 순서대로 실행되어야 하기 때문이죠.만약에 입출력 작업이 먼저 와 있다면 입출력 작업이 끝날 때까지 CPU가 쉬어야해서 CPU 사용률이 감소한다는 단점이 있습니다. SJF를 사용하기 여러운 이유가 뭔가요?SJF(Shortest Job First)는 짧은 작업을 먼저 실행하는 알고리즘입니다.SJF에는 2개의 문제점이 있습니다.1) 어떤 프로세스가 얼마나 실행될지 예측하기 어렵다는 점2) Burst time이 짧은 프로세스가 중간에 계속 들어오면 긴 프로세스는 계속 뒤로 밀려 아주 오랫동안 실행되지 않을 수 있다는 점이런 문제점 때문에 SJF는 사용하기 어렵습니다. RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?RR스케줄링에서 타임슬라이스가 아주 작으면 앱이 동시에 동작하는 것처럼 느낄 수 있습니다.그러나 단점으로는 오버헤드가 너무 커진다는 것입니다. Context Switching 처리량이 실행되는 프로세스 처리량보다 많기 때문에 이런 일이 발생하게 됩니다. 운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?CPU bound process는 대부분의 시간에 CPU연산을 하는 프로세스입니다.CPU를 많이 사용하기 때문에 CPU사용하는 프로세스가 실행하다가 CPU스케줄러에 강제로 CPU를 빼앗긴다면 운영체제는 CPU bound process로 판단합니다.I/O bound process는 대부분의 시간을 I/O작업으로 보내고 CPU연산을 조그맣게 합니다. CPU 사용이 적기 때문에 CPU사용하는 프로세스가 스스로 CPU를 반납한다면 운영체제는 CPU I/O process로 판단합니다. 공유자원이란무엇인가요?공유자원이란 프로세스 간 통신을 할 때 '공동으로 이용'하는 변수나 파일들을 의미합니다. 교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?교착상태에 빠지기 위해서는 아래 4가지로 이 조건들을 모두 충족해야 합니다.1) 상호배제한 프로세스가 한 리소스를 점유했다면 그 리소스는 다른 프로세스에서 공유될 수 없습니다.2) 비선점한 프로세스가 리소스를 점유할 때 다른 프로세스가 리소스를 뺏을 수 없습니다.3) 점유와 대기어떤 프로세스가 한 리소스를 가지고 있는 상태에서 다른 리소스를 원하는 상태입니다.4) 원형대기점유와 대기를 하는 프로세스들의 관계가 원형을 이루고 있어야합니다. 자료구조와 알고리즘재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?재귀함수에서 기저조건을 만들지 않거나 잘못 설정하면 재귀함수가 계속 호출되게 되고 메모리가 금방 가득 차서 프로그램 자동 종료되는 상황이 생길 수 있습니다. 0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.def sumOdd(n): if n
미션
・
운영체제
・
알고리즘
・
자료구조
・
cs
2024. 10. 13.
1
[인프런 워밍업클럽 CS 2기] 2주차 발자국
어느덧 2주차에 접어들었습니다.이번주도 너무 빠르게 지나간 것 같아 아쉬워요.그렇지만 많은 것을 했기에 나름 뿌듯함이 있는 주였습니다.가장 좋은 것은 이번주부터 발표스터디를 시작했다는 것입니다. (신청한 과거의 나 칭찬해...)발표를 해야하니 자동으로 빡세게 공부해야함+발표자료도 잘 만들어야 함+모르면 쪽팔림... 등등여러 요소들이 복합적으로 작용해서 원래 스터디에 참여한 제대로 공부한다는 목적을 잘 달성하고 있어서 좋습니다.단점은... 복습+준비+정리까지 시간이 좀 많이 걸린다는 것이 있습니다. - 이번주에 공부한 내용의 키워드 -운영체제CPU스케줄링 알고리즘: SJF, RR(Round Robin), MLFQ프로세스 간 통신공유자원과 임계구역. 임계구역 문제 해결을 위한 상호배제 메커니즘상호배제 메커니즘: 세마포어, 모니터(세마포어 단점 해결)교착상태(데드락) 문제와 해결방법은행원 알고리즘안정상태/불안정상태가벼운/무거운 교착 상태검출자료구조와 알고리즘재귀하노이탑버블정렬선택정렬- 이번주에 공부한 내용 요약 -운영체제CPU 스케줄링 알고리즘 중에서 FIFO는 작업 순서에 따라 평균 대기시간이 달라져요. 그렇다면 burst time이 짧은 프로세스 먼저 실행하는 알고리즘을 만들면 되는 것 아니냐!라는 아이디어로 Shortest Jop First(SJF) 알고리즘이 등장했습니다.SJF는 이론적으로 FIFO보다 성능이 좋지만 프로세스가 얼마나 실행될지 예측이 어렵고, burst time이 긴 프로세스는 계속 뒤로 밀린다는 불공평성 때문에 SJF는 쓰이지 않게 되었습니다.앞선 알고리즘들이 단점이 있자 이를 보완한 알고리즘은 Round Robin(RR)알고리즘이 등장했습니다.한 프로세스에게 일정시간(=타임슬라이스)만큼 CPU를 할당하고 할당시간이 지나면 강제로 뺏어서 다른 프로세스에게 일정시간만큼 CPU를 할당하는 방법을 의미합니다.RR의 성능은 타임슬라이스 값에 따라 달라져서 적절한 값을 주는 것이 가장 중요합니다.작업을 하다보면 손해보는 프로세스가 생기기도 하는데 이를 해결하기 위해 RR에서 업그레이드된 알고리즘인 MLFQ(Multi Level Feedback Queue)가 등장했어요. 이 방법이 오늘날 운영체제에서 가장 일반적으로 쓰이는 CPU스케줄링 기법입니다.프로세스는 다른 프로세스와 데이터를 주고받으며 통신하기도 해요. 프로세스 간 통신을 하다보면 공동으로 이용하는 변수나 파일들이 생기는데 이것을 '공유자원'이라 합니다.그런데 공유자원을 쓰다보면 자원에 여러 프로세스가 동시에 접근하는 것과 같은 문제가 생기기도 합니다. 이런 문제들을 '동기화 문제'라고 합니다.동기화 문제 해결을 위해 여러 프로세스가 동시에 사용하면 안되는 영역인 '임계구역'을 정의하게 되었습니다.임계구역 문제 해결을 위해 '상호배제 메커니즘'이 필요해요.상호배제 메커니즘으로는 '세마포어', '모니터'가 있어요세마포어는 동기화에서 가장 중요한 개념입니다. 공유자원을 지키는 열쇠같은 개념으로 이를 사용하면 여러 프로세스가 동시에 공유자원에 접근하지 못하게 할 수 있습니다.세마포어는 wait, signal 함수를 사용하는데 이 순서가 잘못 호출되면 세마포어를 잘못 사용할 가능성이 있어요. 그래서 등장한 것이 '모니터'입니다.모니터(컴퓨터 모니터 아님...)는 운영체제가 처리하는 것이 아니라 프로그래밍 언어차원에서 지원합니다. 대표적으로 자바에서 모니터를 지원해요.모니터 구현만 완벽하다면 세마포어처럼 wait, signal로 감싸지 않아도 되어서 편하고 안전하게 코드 작성이 가능합니다. 자료구조와 알고리즘재귀는 어떤 것을 정의할 때 자기 자신을 참고하는 것을 의미합니다.재귀함수를 정의해서 쓸 때는 탈출조건이 반드시 있어야합니다.콜스택은 함수가 호출되면서 올라가는 메모리 영역을 의미합니다.(=스택 자료구조)함수를 호출하면 콜스택에 올라가고 함수가 종료되면 콜스택에서 제거됩니다.재귀함수를 사용해서 해결하는 대표적인 문제로 '하노이 탑'이 있습니다.버블정렬은 가장 쉽게 생각할 수 있는 정렬방법 중 하나입니다.앞에서부터 바로 옆의 숫자와 크기를 비교하고 자리를 바꾸는데 이 과정을 끝까지 확인해가며 정렬하는 방법입니다.방법은 간단한데 성능이 좋지않다는 단점이 있습니다.버블정렬처럼 구현은 쉬운데 성능은 그닥 좋지 못한 알고리즘으로 '선택정렬'이 있습니다.선택정렬은 배열의 처음부터 마지막까지 쭉 확인한 다음 작은 값을 처음으로 가지고 옵니다. 정렬되지 않은 영역을 대상으로 정렬이 완료될 때까지 이 방법을 쭉 반복합니다.- 간단하게 이번 주 회고 -우여곡절 끝에 발표 스터디가 이번주부터 시작되었습니다. 다들 잘하는 분들로 모여서 나만 뒤쳐질 수는 없다!는 생각으로 따라가고 있습니다. 아마 이분들과 스터디를 하지 않았다면 강의 그냥 한번 보고 다음에 또 봐야지 했을 것 같아요. 스터디에서 발표도 해야하고 강의 내용으로 얘기도 해야 해서 정말 많이 복습했어요. 덕분에 이번 스터디 끝나면 배운 내용이 머리에서 떠나지는 않을 것 같습니다.(▲ 스터디에 사용한 발표자료 중 하나...) 어느덧 2주차가 마무리되었습니다. 주차가 거듭될수록 강의 내용이 더 많아지고 있는데 강의가 재미있어서 정말 다행입니다... 이제 3주차에 접어들게 되는데 계속 꾸준하게 강의 듣고 스터디를 해서 목표한 바를 이루도록 노력해야겠습니다.
운영체제
・
자료구조
・
알고리즘
・
스터디
2024. 10. 06.
1
[인프런 워밍업클럽 CS 2기] 1주차 미션
첫째주 미션입니다하나씩 풀어보겠습니다.운영체제위 코드는 1초 마다 플레이어가 스킬을 사용했는지 체크하는 코드입니다. 이 방식은 폴링방식입니다. 1초마다 체크하기 때문에 성능에 좋지 않습니다. 이를 해결하기 위한 방식으로 어떤 걸 이용해야 할까요?A. 폴링방식의 성능 문제 해결에는 '인터럽트'를 사용하면 됩니다. 인터럽트는 비동기적으로 동작하기 때문에 성능에 이점이 있어요. 프로그램과 프로세스가 어떻게 다른가요?A. 프로그램은 저장장치에 저장된 명령문의 집합체로 '애플리케이션(앱)'이라 불리기도 합니다. Window에서는 .exe 파일의 형태를 보입니다. 저장장치만 사용하는 '수동적인 존재'입니다.프로세스는 실행중인 프로그램을 의미하는데 프로그램이 '메모리'에 올라갔을 때를 의미합니다. 프로그램과는 다르게 '능동적인 존재'이기도 합니다. 멀티프로그래밍과 멀티프로세싱이 어떻게 다른가요?A. 멀티프로그래밍은 메모리에 여러개의 프로세스가 올라온 것을 의미합니다. 멀티프로세싱은 CPU가 여러 프로세스를 처리하는 것을 의미하는데 이때 CPU는 시분할 처리로 각각의 프로세스를 짧은 시간 동안 교대로 실행합니다.) 운영체제는 프로세스를 관리하기 위해서 어떤 것을 사용하나요?A. 프로세스 관리를 위해 'PCB'를 사용합니다. 프로세스가 만들어지면 운영체제는 PCB를 만들어 프로세스의 정보를 저장합니다. 만약 프로세스가 종료되면 운영체제는 해당 프로세스의 PCB를 제거합니다. PCB에는 포인터, 프로세스상태, 프로세스ID, 프로그램Counter, 레지스터 정보, 메모리 관련정보, CPU스케줄링 정보 등의 다양한 정보를 저장하고 있는 구조입니다. 컨텍스트 스위칭이란 뭔가요?A. Context Switching은 프로세스를 실행하는 중에 다른 프로세스를 실행하기 위해 실행중인 프로세스의 상태는 저장하고 다른 프로세스의 상태값으로 교체하는 작업을 의미합니다.CPU 점유시간이 다 되었거나, 입출력 요청이 있거나, 다른 종류의 interupt가 있을 때 context switching을 합니다. 자료구조여러분은 교실의 학생 정보를 저장하고 열람할 수 있는 관리 프로그램을 개발하려고 합니다. 이 때 여러분이라면 학생의 정보를 저장하기 위한 자료구조를 어떤 걸 선택하실 건가요? 이유를 함께 적어주세요.A. 학생의 정보를 저장하고 열람하기 위해서 '딕셔너리'를 사용할 것 같아요. 학생이름을 key로 하고 학생정보를 value로 해서 학생의 이름과 정보를 저장하고 열람하기 편하게 만들 것 같아요. 딕셔너리는 데이터 탐색, 삽입, 삭제가 쉽기 때문에 학생 정보를 관리하기에 적합하다고 생각합니다. 여러분은 고객의 주문을 받는 프로그램을 개발하려고 합니다. 주문은 들어온 순서대로 처리됩니다. 이 때 여러분이라면 어떤 자료구조를 선택하실 건가요? 이유를 함께 적어주세요.A. 고객의 주문을 들어온 순서대로 처리하기 위해서 FIFO 구조인 '큐'를 선택할 것 같아요. 큐는 FIFO(First In First Out)로 먼저 들어온 데이터가 먼저 나가게 하는 자료구조이기 때문에 위와 같은 목적에 적합할 것 같습니다.