블로그
전체 72024. 10. 24.
0
인프런 워밍업 클럽 2기 - 특별미션
function quickSort(arr, left, right) { if (left = arr[leftStartIndex].count) { leftStartIndex++; } while (rightStartIndex >= left + 1 && pivot
2024. 10. 20.
1
인프런 워밍업 클럽 2기 - 발자국 3주차
회고뿌이뿌이뿌이~~! 🥳🥳🥳🥳🥳 마지막 발자국, 미션도, 강의도 전부 해냈습니다~! 감사합니다.이 영광을 감자님에게 돌리겠습니다. 강의 들을 때 빠른 답변 정말 정말 감사합니다. 후 사실 발자국 보신다 하니까 작성하는데 힘이 들어가네요. 사실 아무도 안 볼 줄 알고 대충 는데 관전자(1명)이 있다고 하니 이미지도 넣어보았습니다...사실 저는 완주가 아닙니다~! 왜냐면 시작부터 OT를 못 들었습니다 ㅎㅎ;; 신청하고 보니 뺼 수 없는 일정이 존재하더라고요. 그래서 시작부터 실패 상태로 시작했습니다 〒▽〒하지만 사실 제가 완주가 목적이 아니니까요~!! 공부하고 싶어서 지원했는걸요. 그래서 노완주지만 미션도 강의도 다해버렸습니다~ ! 심지어 남는 시간에 개인공부를 ?!? 갓생이다 갓생 ㅎㅎ 워밍업 클럽은 이번 주로 끝이지만, 앞으로도 이런 일정 처럼 공부하고자 합니다. 역시 결실이 있으니 의욕이 생기네요! 아자아자~!! 강의 수강운영체제메모리와, 가상메모리, 입출력 장치에 대해서 학습하였습니다.어떻게 전체적으로 프로그램이 돌아가는지 알 수 있어서 매우 유익한 강의였습니다. 그림으로 보니까 특히 이해가 잘됬습니다. 알고리즘정렬 : 알고리즘과 , 동적 프로그램에 대해서 학습하였습니다.특히 CPU과 메모리에 대한 자원배분으로 인한 동적프로그램이 제일 흥미로웠습니다. 예전에는 재귀가 잘 이해가안가서 동적도 덩달하 이해가 어려웠는데, 그림으로 보니 굉장히 이해가 잘되었습니다.
2024. 10. 20.
1
인프런 워밍업 클럽 2기 - CS 미션 3
# 운영체제1. 메모리의 종류는 어떤것들이 있나요? 각 메모리의 특징도 함께 적어주세요.레지스터 > 캐시 > 메인메모리(RAM) > 보조저장장치(HDD,SSD)오른쪽으로 갈수록 속도는 느리고, 가격이 저렴해짐.레지스터 - cpu 내부의 저장장치로, cpu가 계산하기 위해 데이터를 임시 저장 캐시 - cpu와 메모리 사이의 속도 차이를 줄이기 위해 데이터를 임시로 저장해두는 곳 cpu 계산에 필요할만한 데이터를 미리 가져옴메인메모리 - 실제 운영체제와 프로세스들이 올라가는 공간전원이 꺼지면 데이터도 사라지는 휘발성 메모리 공간 보조저장정치 - SSD, HDD 등으로 데이터 영구저장전원이 꺼져도 데이터가 남는 비휘발성 메모리2. 사용자 프로세스가 메모리의 운영체제 영역에 침범하지 못하도록 만든 레지스터는 어떤 레지스터일까요?경계레지스터 : CPU 내부에 존재하는 레지스터로 메모리관리자가 프로세스가 경계를 벗어났는지 검사하고, 만약 벗어났다면 그 프로세스를 종료시킨다.3. 메모리 할당 방식에서 가변 분할 방식과 고정 분할 방식의 장단점은 뭔가요?가변 분할 방식 : 프로세스가 크다면, 메모리도 크게 할당장점 : 연속된 공간에 할당되어, 더 크게 할당되어 낭비되는 공간 '내부 단편화'가 없음단점 : '외부단편화' 발생 -> 공간이 남는데 연속된 공간이 아니라 할당 할 수 없음.고정 분할 방식 : 일정 크기로 분할하여, 프로세스 크기와 상관없이 메모리 할당 장점 : 구현이 간단하며 , =오버헤드가 적음단점 : 크기보다 더 할당되는 '내부 단편화' 발생 4. CPU 사용률을 올리기 위해 멀티프로그래밍을 올렸지만 스왑이 더 많이 이루어져 CPU 사용률이 0%에 가까워 지는 것을 뭐라고 할까요?스레싱5. HDD나 SSD는 컴퓨터를 실행시키는데 꼭 필요한 걸까요?꼭 필요하진 않다. '실행'만 시키는 용도로는 꼭 필요하지 않지만, 컴퓨터를 사용하기 위해서는 필요합니다. 이유를 함께 적어주세요.6. 파일을 삭제해도 포렌식으로 파일을 복구할 수 있는 이유가 무엇일까요?'파일 삭제시 실제 파일이 삭제되는 것이 아닌, 그 파일의 헤더만 지우고, Free Block List에 추가하게된다. 즉 해당 데이터에 새로운 데이터가 덮어지기 전까지는 파일을 복구할 수 있다. # 자료구조와 알고리즘1. 지금까지 배운 5개의 정렬 알고리즘의 장단점과 시간 복잡도를 적어주세요.버블 정렬O(n²)장점 : 이해와 구현이 쉬움단점 : 성능이 좋지 않음선택정렬O(n²)장점: 이해와 구현이 쉬움단점 : 성능이 좋지 않음삽입정렬O(n²)장점: 이해와 구현이 쉬움단점 : 성능이 좋지 않음병합정렬O(n log n)장점 : 성능이 좋음단점 : 정렬 배열을 저장한 메모리 공간 필요퀵정렬O(n log n)장점 : 성능이 좋음 단점 : 피벗설정을 잘못할 경우 O(n²)의 성능이 될 수 있음. 저장할 공간이 추가로 필요2. 메모리가 부족한 시스템에서 어떤 문제를 해결하는데 재귀로 쉽게 구현이 가능할 것 같습니다. 여러분이라면 메모이제이션과 타뷸레이션 중 어떤 걸 이용하실 건가요? 이유를 함께 적어주세요타뷸레이션을 사용하겠습니다. '메모리가 부족' 환경에서는 재귀 호출로 발생하는 오버헤드가 방지하기 위해 하양식 알고리즘인 타뷸레이션을 사용하겠습니다.
워밍업클럽cs
2024. 10. 13.
1
인프런 워밍업 클럽 2기 - 발자국 2주차
회고이번주는 기간 맞춰서 들은 걸 넘어서, 중간에 휴일이 껴있어서 먼저 듣기도 했다. 그리고, 남는 시간에 다른 공부를 하는 100점에 110점!👏👏👏 다음주도 100점 만점에 105점을 하고 싶다.마지막 주도 화이팅! 강의 수강운영체제cpu 스케줄링, 프로세스 동기화, 데드락, 메모리에 대해 학습하였다. 공유자원과 데드락이 정말 재밌었다. 공유자원에 다양한 만약? 이런 경우라면 하고 생각해볼 수 있는 경우가 많았다.세마포어의 해결 하는 부분에서 모니터락에 대해서 설명해주셨는데만약, 인스턴스 단위 락을 걸고싶다면? 이런석으로도 사용할 수 있다는걸 배웠다. public class Health { private int health = 100; synchronized void increase(int amount) { health += amount; } synchronized void decrease(int amount) { health -= amount; } }이외에도 해당 모니터락은 범위 별로 다양하게 사용할 수 있는데, 이런 락을 많이 걸게되면, 성능상 문제가 생길 요지가 있으니 적잘한 락을 거는게 매우 중요할 것 같다. 알고리즘알고리즘에 대해 본격적으로 학습하였다.특히 재귀적으로 생각하기가 도움이 많이 되었다. 사실 알고리즘을 공부하면서, 재귀 함수를 사용하는 경우가 많은데 이해가기 좀 어려웠다 ㅠㅠ 이번에 강의를 들으면서 어떤 상황에는 재귀적으로 사용하면 좋을지 도움이 되었다.
워밍업클럽cs
2024. 10. 11.
1
인프런 워밍업 클럽 2기 - CS 미션 2
운영체제1. FIFO 스케줄링의 장단점이 뭔가요?장점 : 단순하고 직관적이다.단점 : 늦게 도착한 짧은 프로세스가, 앞의 긴 프로세스를 기다려야합니다.2. SJF를 사용하기 여러운 이유가 뭔가요?긴 실행 시간을 가진 프로세스가 무한정으로 대기하게 될 수 있습니다.3. RR 스케줄링에서 타임 슬라이스가 아주 작으면 어떤 문제가 발생할까요?컨텍스트 스위칭이 너무 자주일어나, 프로세스 처리량 4. 운영체제가 MLFQ에서 CPU Bound Process와 I/O Bound Process를 어떻게 구분할까요?슬라이스 크기를 오버해 CPU를 사용한다면 CPU Bound Process일 확률이 높고, CPU를 사용하다 반납하는 경우는 I/O Bound Process일 확률이 높습니다.5. 공유자원이란무엇인가요?프로세스나 스레드가 동시에 접근하여 사용할 수 있는 자원 6. 교착상태에 빠질 수 있는 조건은 어떤 것들을 충족해야할까요?상호 배제 : 한 리소스를 점유했다면, 다른 프로세스에 공유 되지 않음.비선점 : 프로세스가 리소스를 사용하고 있으면 다른 프로세스가 빼앗아갈 수 없음.점유와 대기 : 프로세스가 리소스를 점유한 채로 다른 자원을 기다림.원형 대기 : 점유와 대기를 하고 있는 프로세스들의 관계가 순환을 이루고 있음. 자료구조와 알고리즘1. 재귀함수에서 기저조건을 만들지 않거나 잘못 설정했을 때 어떤 문제가 발생할 수 있나요?재귀 호출이 끝나지 않고, 결국 콜스택 메모리가 가득차서 종료됨. 2. 0부터 입력 n까지 홀수의 합을 더하는 재귀 함수를 만들어보세요.function sumOdd(n) { // 재귀 로직 if (n == 0) return 0; if (n % 2 !== 0) { return n + sumOdd(n - 1); } else { return sumOdd(n - 1); } } console.log(sumOdd(10)); // 25
워밍업클럽cs
2024. 10. 06.
1
인프런 워밍업 클럽 2기 - 발자국 1주차
강의 수강운영체제 운영체제는 컴퓨터를 동작시키기 위해 존재하며, 그를 위한 CPU, 스레드, 프로그램, 프로세스, CPU 스케줄링 등에 대해서 알게 되었다. 간혹 이런이야기를 들은적 있다, 컴퓨터의 성능이 느려진다면 크롬을 의심해 봐라, 크롬은 너무 무겁다. 그래서 컴퓨터가 느려진다 싶을 때, cpu를 확인해 보면 크롬이 어마어마하게 커져있는 경우가 대부분이었다. (그리고 크롬 탭 종료🤣) 근데 사실 크롬은 무겁다라는 생각은 했지만, 그 이유는 생각해 본 적이 없었는데 이 강의를 들으면서 프로세스에 대해 생각해보면서 깨달았다. 크롬이 무거운 이유, 그럼에도 내가 크롬을 사용하는 이유. 그렇다 프로세스는 빠르니까... 그러면서 내가 프로그램을 개발한다면, 어느 방법을 사용해야할까라는 생각을 가질 수 있는 좋은 계기가 되었다. 자료구조자료구조에 대해서 배웠다. 해당 자료구조는 배열, 연결리스트, 스택, 큐, 덱, 해시테이블, 셋에 대해 학습하였으며, 해당 자료구조를 js로 구현하여 흐름을 파악하였다. 사실 알고리즘은 듣고싶은 강의는 아니였다. 어느정도 안다는 생각을 가지고 있었기 때문이었는데, 이것은 나의 자만...이었다. 들으면서 한번 더 정리할 수 있고 한번 더 생각할 수 있는 계기가 되었던 것 같다. 또한 구현해본적 없는 js로 구현하는 점이 새롭게 느껴졌다. 회고일단 미션과 발자국을 기간 내에 해냈다는 점을 칭찬하고 싶다. 잘했다 나😘다만... 금요일의 경우 당일 강의를 듣지 못하고, 주말에 대체했다는 점 아쉬웠다. 다음주에는 꼬박꼬박 강의를 듣고, 주말에는 한번 더 복습할 수 있는 시간으로 사용하면 좋겠다. 미션미션은 대체로 간단한 문제라, 배웠던 내용을 학습하면서 정리하며 적었다.다만 알고리즘의 경우 생각을 좀 해던것 같다. 조건을 토대로 어떤 알고리즘을 사용하면 좋을지 고민을 했는데, 일단 선택지를 삭제해가는 소거법으로 결론을 도출했다. 이 알고리즘은 성능이 문제가 생길 수 있고, 이 알고리즘은 이 부분보다 어느부분이 별로고, 라는 생각을 하면서 제외하면서 선택했다. 회고위의 알고리즘을 생각해면서 재밌었기 때문에 알고리즘을 좀 더 많이 파악하여, 생각할 수 있는 선택지를 늘리고 싶다.
워밍업클럽cs