함수와 구조체 함수에서의 구조체 사용 구조체를 함수의 매개변수로 사용 일반변수를 함수의 매개변수로 사용하는 것과 동일 매개변수가 구조체인 경우 함수의 형식매개변수를 구조체로 선언 해당 구조체 전체가 복사되기 때문에 편리 구조체 전체가 복사되기 때문에 시간이 많이 걸리고 기억공간의 낭비가 심하다. 구조체 포인터를 함수의 매개변수로 사용 일반적으로 구조체 포인터를 함수의 매개변수로 사용 구조체를 복사하지 않기 때문에 실행속도가 향상되고 기억공간의 사용효율도 좋다. typedef 이미 존재하는 자료형에 새로운 이름을 붙이기 위한 키워드 간단하거나 의미있는 이름으로 바꿀 수 있어 프로그램 이해가 쉽다. 구조체 형을 선언하는데 많이 사용 형식 typedef 기존 자료형 새로운 자료형이름; 사용예 typedef i..
장치의 개념 컴퓨터 시스템의 구성 다양한 장치들 CPU, 메모리: 프로세스 실행에 필수 나머지 장치들: 프로세스 실행 시 데이터 입력이나 출력에 사용하는 입출력장치 장치의 구분 입출력장치의 구분 장치의 기능적 특징과 장치 관리자의 관리 방법에 따라 구분 전용장치 한 번에 단지 하나의 프로세스에만 할당 예: 테이프 드라이브, 프린터, 플로터 등 단점: 대기시간이 길어질 수 있음 공용장치 여러 프로세스에 동시에 할당 예: 디스크 같은 직접접근 저장장치 스케줄링 기법 필요 가상장치 전용장치를 가상의 공용장치처럼 보이게 함 디스크 같은 공용장치를 이용 예: 스풀링을 적용한 플로터 등 장치의 구성 논리적 구성 사용자 응용 프로그램 운영체제 하드웨어(장치, 장치제어기) 장치제어기(하드웨어) 장치를 직접적으로 다루는..
페이지 교체기법 모든 페이지 프레임이 사용되고 있을 때 새로 적재되어야 할 페이지를 위하여 어느 페이지를 교체할 것인가를 결정 교체 대상 선택 -> 보조기억장치에 보관 -> 새로운 페이지를 적재 교체대상 선택 최적화의 원칙 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체 대상으로 선택 이론적으로는 최적이나 미래를 예측할 수 없어 실현 불가능 선택을 위한 기본 정책 대체로 좋은 결론을 내리면서 시간 및 공간의 오버헤드가 적은 방법 교체 제외 페이지 페이징을 위한 슈퍼바이저 코드 영역, 보조기억장치 드라이버 영역, 입출력장치를 위한 데이터 버퍼 영역 등 페이지 교체 알고리즘 FIFO(First-In-First-Out) 페이지 교체기법 메모리 내에 가장 오래있었던 페이지를 교체 구현: FIFO 큐 이용 단점..
가상메모리의 개념 메모리 크기보다 더 큰 기억공간이 필요한 프로세스를 실행할 수 있게 하는 방법 연속 메모리 할당: 프로세스 실행 불가 가상 메모리: 프로세스 실행 가능 전체중에서 실제로 필요한 일부만 메모리에 올리기 가상 메모리 프로세스에 의해 참조되는 주소를 메모리에서 사용하는 주소와 분리 프로세스 가상주소 가상주소공간 V 메모리 실주소 실주소공간 R 현재 필요한 일부만 메모리에 적재 사상(mapping) 프로세스 실행을 위해 가상주소를 실주소로 변환 동적 주소 변환(DAT): 사전에 모든 것을 처리하지 않고 실시간으로 프로세스가 실행되는 동안 사상 인위적 연속성 가상주소 공간에서는 연속이지만 실주소 공간에서도 연속일 필요는 없음 블록 단위 주소 변환 블록 단위로 분류하여 각 블록이 메모리의 어디에 ..
프로세스와 메모리 프로세스의 동작 프로그램 카운터를 참조하여 메모리로부터 수행될 명령을 읽어 CPU의 해당 명령을 수행 기억장치 계층구조 적절한 비용으로 높은 성능을 낼 수 있도록 계층적으로 구성 CPU(레지스터 캐시 기억장치 메모리 보조기억장치 CPU쪽으로 갈수록 접근속도가 빠름, 비트당 기억장치 비용이 높음 보조기억장치쪽으로 갈수록 대용량 메모리 관리 메모리 호출 언제 새로운 프로세스를 메모리에 둘 것인가? 메모리 배치 실행될 프로세스를 메모리 내의 어느 곳에 둘 것인가? 메모리 교체 메모리가 꽉 찬 상태에서 새로운 프로세스를 적재해야 한다면 어떤 프로세스를 제거할 것인가? 그 외 메모리를 고정 분할할 것인가 동적 분할할 것인가? 프로세스의 적재 영역이 고정적인가 유동적인가? 단일 프로그래밍 환경 초..
좋은 코드란? 성공, 실패의 경우를 분리해서 처리할 수 있음 비즈니스 로직을 한눈에 파악할 수 있음 어려운 코드란? 실패, 성공의 경우가 서로 섞여서 처리됨 비즈니스 로직을 파악하기 어려움 흐름파악이 어려움 도메인 맥락 표현이 안되어 있음 동료에게 물어봐야 알 수 있는 코드 원하는 로직을 빠르게 찾으려면? 하나의 목적을 가진 코드가 흩뿌려져 있지 않게 응집시켜야 함 응집시킬 것 당장 몰라도 되는 디테일 응집시키면 안되는 것 코드 파악에 필수적인 핵심 정보 함수가 여러가지 일을 하지 않도록 단일책임 형태로 만듦 단일책임을 가질 수 있도록하는 리팩토링 tip 한가지 일만 하는, 명확한 이름의 함수 한가지 일만 하는, 기능성 컴포넌트 조건이 많아지면 한글이름도 고려해 볼 것 함수의 세부구현 단계가 제각각이지 ..
구조체의 개념 구조체(structure)란? 서로 다른 자료형을 갖는 자료들의 모임을 하나의 자료형으로 정의하여 사용하는 자료형 구조체 => 사용자 정의 자료형 다양한 형식의 자료를 간결한 형식으로 표현 가능 사용자가 새로운 형식을 정의하여 사용할 수 있다. 구조체의 정의와 변수 선언 구조체의 정의 형식 struct 구조체명{ member 1; member 2;} 구조체 변수의 선언 형식 struct 구조체명 변수명1, 변수명2, 변수명3; 사용예 struct score x, y[10], z; 구조체 변수의 초기화 struct person{ char name[8]; int age; char sex; }; struct person X = {"홍길동", 20, 'M'}; 구조체 멤버의 참조 형식 구조체변수명..
합병 정렬과 퀵 정렬 주어진 배열을 동일한 크기의 두부분 배열로 분할 정렬된 두 부분 배열을 합쳐서 하나의 정렬된 배열을 만듦 합병 정렬의 성능과 특징 최선/최악/평균 수행 시간이 모두 O(nlogn) 안정적인 정렬 알고리즘 퀵 정렬 퀵정렬의 성능과 특징 최악 수행 시간 O(n^2), 최선/평균 수행 시간 O(nlogn) 피벗 선택의 임의성만 보장되면 평균 성능을 보일 가능성이 매우 높음 제자리 정렬 알고리즘 안정적이지 않은 정렬 알고리즘 힙 정렬 힙 자료구조의 장점을 활용한 정렬 (최대)힙 완전 이진 트리 각 노드의 값은 자신의 자식 노드의 값보다 크거나 같다. 힙의 장점 임의의 값 삽입과 최대값 삭제가 용이 힙의 구현 일차원 배열 부모노드: i 자식노드: 2i+1(왼쪽 노드), 2i+2(오른쪽 노드)..
- Total
- Today
- Yesterday
- 퀵정렬
- react
- 운영체제
- client side rendering
- C++
- BFS
- javascript
- 구조체
- 인접리스트
- 이진탐색
- Java
- 교착상태
- 배열
- 재귀함수
- 클래스
- 스텍
- dfs
- 최단경로
- 소프트웨어
- 병행프로세스
- 알고리즘
- C
- 자료구조
- 동적프로그래밍
- server side rendering
- Stack
- 세마포어
- stackframe
- 인접행렬
- 입출력장치
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |