전체 글
Happy Hacking!
-
계획 오늘은 내내 놀았기 때문에 계획은 패스합니다 ^^;; 학습한 내용 가상 메모리 OS의 메모리 관리에 따라 프로그램 실행 양상과 컴퓨터 전체 성능이 좌우되기 때문에 중요한 영역이다. OS에서 메모리를 관리할 때는 프로세스들을 메모리에 일렬로 할당할 수도 있고(연속 메모리 할당), 프로세스를 잘게 쪼개어 저장할 수도 있다(가상 메모리). 연속 메모리 할당 연속 메모리 할당이란, 메모리에 프로세스들을 연속적으로 할당하는 걸 의미한다. 이때, 모든 프로세스를 메모리에 올린다면 메모리 공간이 부족하기 때문에 사용하지 않는 프로세스(ex. IO 작업을 기다리는 프로세스)는 임시로 Disk로 옮겨서 관리한다. 그렇게 해서 빈 공간에 새로운 프로세스를 할당하는 방식을 Swapping이라고 부른다. Swap Sap..
가상 메모리계획 오늘은 내내 놀았기 때문에 계획은 패스합니다 ^^;; 학습한 내용 가상 메모리 OS의 메모리 관리에 따라 프로그램 실행 양상과 컴퓨터 전체 성능이 좌우되기 때문에 중요한 영역이다. OS에서 메모리를 관리할 때는 프로세스들을 메모리에 일렬로 할당할 수도 있고(연속 메모리 할당), 프로세스를 잘게 쪼개어 저장할 수도 있다(가상 메모리). 연속 메모리 할당 연속 메모리 할당이란, 메모리에 프로세스들을 연속적으로 할당하는 걸 의미한다. 이때, 모든 프로세스를 메모리에 올린다면 메모리 공간이 부족하기 때문에 사용하지 않는 프로세스(ex. IO 작업을 기다리는 프로세스)는 임시로 Disk로 옮겨서 관리한다. 그렇게 해서 빈 공간에 새로운 프로세스를 할당하는 방식을 Swapping이라고 부른다. Swap Sap..
2023.08.23 -
계획 학습한 내용 스케줄링과 동기화 스케줄링 프로세스 관리 서비스 중 가장 중요한 2가지는 스케줄링과 동기화라고 할 수 있다. 오늘은 여기에 대해 공부해 보았다. 스케줄링이 중요한 이유는 프로세스 유형에 따라 프로세스를 수행해야 리소스를 더 효율적으로 사용할 수 있게 되기 때문이다. 예를 들어, IO bound가 높은 process와 CPU bound가 높은 process가 있다면, 당연히 IO bound가 높은 process를 먼저 실행하는 편이 더 효율적일 것이다. CPU를 얼마 사용하지 않고 요청만 한 뒤 WAITING 상태로 전이하기 때문이다. 따라서 IO bound process의 경우 CPU bound process보다 우선순위를 높게 주는 편이 더 효율적으로 스케줄링 할 수 있게 할 수 있다..
스케줄링과 동기화계획 학습한 내용 스케줄링과 동기화 스케줄링 프로세스 관리 서비스 중 가장 중요한 2가지는 스케줄링과 동기화라고 할 수 있다. 오늘은 여기에 대해 공부해 보았다. 스케줄링이 중요한 이유는 프로세스 유형에 따라 프로세스를 수행해야 리소스를 더 효율적으로 사용할 수 있게 되기 때문이다. 예를 들어, IO bound가 높은 process와 CPU bound가 높은 process가 있다면, 당연히 IO bound가 높은 process를 먼저 실행하는 편이 더 효율적일 것이다. CPU를 얼마 사용하지 않고 요청만 한 뒤 WAITING 상태로 전이하기 때문이다. 따라서 IO bound process의 경우 CPU bound process보다 우선순위를 높게 주는 편이 더 효율적으로 스케줄링 할 수 있게 할 수 있다..
2023.08.20 -
계획 학습한 내용 Red Black Tree vs Heap vs AVL Tree 알고리즘 문제를 풀면서 TreeMap을 사용한 일이 있었다. 내가 알기로 TreeMap은 Heap 꼴의 형태를 취하고 있고, 값을 넣으면 그때마다 element을 채워나가는 식이라고 알고 있었다. 그런데 내가 짜려는 알고리즘은 element를 모두 채운 후에 sort하는 작업이 들어가도 되는 것이라, 매번 값을 넣으면 그때마다 트리를 찾아 가는게 비효율적이라 생각했다. 따라서 HashMap으로 만든 다음에, putAll로 넣으면 한 번에 값을 넣고 sort하는게 아닐까? 하는 생각이 들어 메서드를 확인해 보았다. public void putAll(Map
Red Black Tree vs Heap vs AVL Tree계획 학습한 내용 Red Black Tree vs Heap vs AVL Tree 알고리즘 문제를 풀면서 TreeMap을 사용한 일이 있었다. 내가 알기로 TreeMap은 Heap 꼴의 형태를 취하고 있고, 값을 넣으면 그때마다 element을 채워나가는 식이라고 알고 있었다. 그런데 내가 짜려는 알고리즘은 element를 모두 채운 후에 sort하는 작업이 들어가도 되는 것이라, 매번 값을 넣으면 그때마다 트리를 찾아 가는게 비효율적이라 생각했다. 따라서 HashMap으로 만든 다음에, putAll로 넣으면 한 번에 값을 넣고 sort하는게 아닐까? 하는 생각이 들어 메서드를 확인해 보았다. public void putAll(Map
2023.08.17 -
계획 학습한 내용 입출력 장치와 Device Driver, Device Controller I/O 장치들은 다루기 어렵다. 그 이유들은 다음과 같다 입출력 장치 종류가 많아서 각자 언어가 다른 것과 같다. CPU와 메모리의 데이터 전송률에 비해 입출력 장치의 전송률이 낮다 이 문제를 해결하는 것이 Device Controller라는 HW이다. Device Controller는 I/O 장치에 붙어있다. Device Controller의 역할은 다음과 같다. CPU와 I/O 장치간 통신 중계 입출력 장치에 대한 오류 검증 데이터 버퍼링 여기서 버퍼링이란, 전송률이 높은 장치와 낮은 장치 사이에 buffer라는 임시 공간을 두어, 데이터를 조금씩 저장하다가 한 번에 내보내(flush) 전송률 차이를 해결하는 ..
입출력 장치와 Device Driver, Device Controller / 인터럽트계획 학습한 내용 입출력 장치와 Device Driver, Device Controller I/O 장치들은 다루기 어렵다. 그 이유들은 다음과 같다 입출력 장치 종류가 많아서 각자 언어가 다른 것과 같다. CPU와 메모리의 데이터 전송률에 비해 입출력 장치의 전송률이 낮다 이 문제를 해결하는 것이 Device Controller라는 HW이다. Device Controller는 I/O 장치에 붙어있다. Device Controller의 역할은 다음과 같다. CPU와 I/O 장치간 통신 중계 입출력 장치에 대한 오류 검증 데이터 버퍼링 여기서 버퍼링이란, 전송률이 높은 장치와 낮은 장치 사이에 buffer라는 임시 공간을 두어, 데이터를 조금씩 저장하다가 한 번에 내보내(flush) 전송률 차이를 해결하는 ..
2023.08.16 -
이 게시물은 단순히 제가 저는 이렇게 테스팅 한다는 걸 정리한 문서입니다. 따라서 정답이 아니며, 동의하기 어려운 부분이 많을 수 있습니다. 이 글 내용을 참고하시더라도, 팀 컨벤션이 존재한다면 그 내용을 따르길 바랍니다. 1. 프로그램 작성시 인수테스트를 먼저 작성합니다 인수테스트를 작성하기 전에는 BDD형식으로 Given / When / Then으로 명시합니다. BDD 형식이란 다음과 같습니다. Given : 주어진 상황 When : 원하는 행동 Then : 원하는 행동 후에 얻은 결과 인수테스트는 시나리오 테스트입니다. 어떠한 상황에서 어떤 행동을 하면 어떤 결과를 얻을 것이다라는 시나리오를 테스트하는 것입니다. 인수테스트를 작성하게 되면 개발하려는 기능에 대해 이해를 더 잘 할수 있고, 개발 전에..
Soko는 이렇게 테스팅합니다이 게시물은 단순히 제가 저는 이렇게 테스팅 한다는 걸 정리한 문서입니다. 따라서 정답이 아니며, 동의하기 어려운 부분이 많을 수 있습니다. 이 글 내용을 참고하시더라도, 팀 컨벤션이 존재한다면 그 내용을 따르길 바랍니다. 1. 프로그램 작성시 인수테스트를 먼저 작성합니다 인수테스트를 작성하기 전에는 BDD형식으로 Given / When / Then으로 명시합니다. BDD 형식이란 다음과 같습니다. Given : 주어진 상황 When : 원하는 행동 Then : 원하는 행동 후에 얻은 결과 인수테스트는 시나리오 테스트입니다. 어떠한 상황에서 어떤 행동을 하면 어떤 결과를 얻을 것이다라는 시나리오를 테스트하는 것입니다. 인수테스트를 작성하게 되면 개발하려는 기능에 대해 이해를 더 잘 할수 있고, 개발 전에..
2023.08.11 -
계획 오늘 익힌 내용 캐시와 레지스터 레지스터는 CPU 요청 처리에 있어 필요한 데이터를 임시 저장하는 기억장치다. CPU에서 연산할 때 메모리에서 읽어오면 느리기 때문에 메모리의 데이터를 레지스터에 올려놓고, CPU에서 사용한다. 위 그림에서 보다시피, 레지스터는 Level 0에 속하고, RAM보다도 훨씬 빠르다. 레지스터는 일종의 캐시기 때문에 메모리에서 값을 때 적중률(hit ratio)를 올리기 위해 데이터 지역성을 고려해 값을 읽는다. 데이터 지역성에는 3가지 종류가 있다. 공간적 지역성 : 데이터를 읽을 때 주변에 있는 데이터들이 참조될 가능성이 높다. 시간적 지역성 : 최근 사용된 데이터가 재사용될 가능성이 높다. 순차적 지역성 : 기억장치에 저장된 순서대로 읽힐 가능성이 높다. quick ..
캐시와 레지스터, 이벤트 루프계획 오늘 익힌 내용 캐시와 레지스터 레지스터는 CPU 요청 처리에 있어 필요한 데이터를 임시 저장하는 기억장치다. CPU에서 연산할 때 메모리에서 읽어오면 느리기 때문에 메모리의 데이터를 레지스터에 올려놓고, CPU에서 사용한다. 위 그림에서 보다시피, 레지스터는 Level 0에 속하고, RAM보다도 훨씬 빠르다. 레지스터는 일종의 캐시기 때문에 메모리에서 값을 때 적중률(hit ratio)를 올리기 위해 데이터 지역성을 고려해 값을 읽는다. 데이터 지역성에는 3가지 종류가 있다. 공간적 지역성 : 데이터를 읽을 때 주변에 있는 데이터들이 참조될 가능성이 높다. 시간적 지역성 : 최근 사용된 데이터가 재사용될 가능성이 높다. 순차적 지역성 : 기억장치에 저장된 순서대로 읽힐 가능성이 높다. quick ..
2023.08.10