본문 바로가기

프로그래밍/CS17

[운영체제] 스케줄링 비선점(nonpreemptive) 프로세스가 일단 실행 상태에 진입하면 종료되거나 자발적으로 CPU를 놓을 때까지는 CPU를 빼앗기지 않음 ​ 선점(preemptive) 현재 실행 중인 프로세스라 할지라도 운영체제에 의해 인터럽트가 걸려 비자발적으로 준비 큐로 이동될 수 있음. -프로세스 간 문맥교환(context switching)이 자주 발생하여 오버헤드가 큼. 그러나 한 프로세스가 CPU 오랫동안 독점하는 현상을 방지할 수 있음. ​ FCFS 비선점 모드 프로세스 들어온 순서대로 처리 - 큐 -프로세스 순서에 따라 평균 대기시간이 엄청 달라짐 (비효율) Convoy Effect(호위효과) : 실행시간이 긴 프로세스가 끝날 때까지 짧은 프로세스가 계속 기다림 ​ Round-Robin (RR) 선점 모.. 2020. 12. 23.
[운영체제] 멀티 프로세스/멀티 쓰레드 시간분석 비교 프로그래밍 PBL 시나리오 요약 및 문제 접근 ​ 신입사원의 프로세스 방식의 코딩 -> 스레드 방식으로 개발하시오! -> 요즘은 쓰레드도 빠르게 느껴지지 않음 -> 새로운 방식의 프로그래밍? Mission: 프로세스와 스레드의 성능비교 - 어떻게 프로그래밍 할 것인가? - 어떤 것이 성능이 좋은가? 절대적으로 성능 차이가 나는가? ​ 비교방법 *사인 그래프 출력 함수 -공유메모리 자원(g_count)을 각 프로세스/스레드에서 10씩 증가시켜서 라디안 값에 따른 그래프 출력 -while문 조건 : g_count 2020. 12. 23.
[논리회로] 디코더와 인코더 디코더와 인코더는 디지털 논리회로에서 중요한 역할을 하는 두 가지 기본 장치입니다. 이들은 정보의 변환 및 해석에 사용되며, 다양한 전자 장치 및 컴퓨터 시스템에서 중요한 기능을 수행합니다. 디코더 (Decoder) 기본 기능: 디코더는 입력선에 나타나는 n비트 2진 코드를 최대 2^2n 가지 정보로 변환하는 조합 논리회로입니다. 간단히 말해서, 디코더는 부호화된 데이터를 해독하여 원래의 정보를 찾아내는 역할을 합니다. 동작 원리: 디코더의 출력 중 하나만 논리적으로 1이 되고, 나머지 출력은 모두 0이 됩니다. 예를 들어, 2x4 디코더는 2비트 입력을 받아 4개의 출력 중 하나를 활성화합니다. 용도 및 응용: 디코더는 다양한 전자장치에서 다중 선택, 데이터 라우팅, 메모리 주소 지정 등에 사용됩니다... 2020. 12. 23.
[논리회로] 병렬가산기, 비교기 병렬가산기(parallel-adder) 란 전가산기 여러 개를 병렬로 연결하여 2비트 이상인 가산기이며, 2진수 각 자리의 덧셈을 동시에 행하여 그 답을 내는 동작을 한다. 일반적으로 n비트의 2진 병렬가산기는 n개의 전가산기(FA)로 구성된다. 직렬가산기는 회로가 작지만 매우 느림. 병렬가산기는 직렬가산기 보단 빠름. 병렬가산기는 아랫단에서 윗단으로 전달되는 캐리(리플-캐리)때문에 전가산기 한 개를 지날 때마다 점점 더 지연이 심해지며 비트가 늘어날수록 지연이 심해진다. 이것을 해결하기 위해 캐리예측가산기(CLA, carry-look ahead-adder)를 사용함! carry generate와 carry propagate란 함수 혹은 연산자를 이용하면 병렬성을 어느 정도 얻을 수 있다는 이점이 있다... 2020. 12. 23.
[논리회로] 조합논리회로, 전가산기 논리회로 중간고사 보고 아 이건 걍 기출풀이가 답이구나! 싶어서 기출문제장으로 직행했다. 아니 근데 이게 웬걸 넘나 어렵자나? 으악악악악 수업시간때 딴 짓한 죄값이다. 조합논리회로는 논리곱 논리합 논리부정 세가지 조합으로 만들어짐. 입력신호, 논리게이트, 출력신호로 구성됨. 조합논리회로에는 ! 가산기 비교기 디코더 인코더 멀티플레서 디멀티플레서 코드변환기가 있다. 조합 논리회로는 출력되는 불 함수 값이 입력값에 의해서만 정해지고 내부에 기억능력이 '없다'! 반가산기는 xor하나 and하나로 이루어짐 반'감'산기는 a에서 and로 가는쪽에 not 붙임. or, and, nand, nor로 이루어진 xor 회로 찾아서 외워라!!!!!!!! 반가산기 출력의 논리식은 S(합)=A'B+AB' (A XOR B 임ㅋ.. 2020. 12. 23.
[자료구조] [C] 퀵 정렬 (quick sort) 퀵정렬 요약) 피벗을 정한다. 피벗보다 작은 거 왼쪽으로 큰 거 오른쪽으로 보냄 (정렬 안되어있음) 피벗은, 중간값을 잡는 등 응용을 할 수 있음. 과정) 피벗 가장 왼쪽 숫자라고 가정한다. 두개의 변수 low와 high를 사용한다. low 변수는 피벗보다 작으면 통과하고, 크면 정지한다. high 변수는 피벗보다 크면 통과하고, 작으면 정지한다. 정지된 위치의 숫자를 low와 high 교환한다. 쭉 가다가 low와 high가 교차되면 종료. high 자리에 피벗(가장 왼쪽 숫자) 집어넣음. 5 3 8 4 9 1 6 2 7 피벗 low high low high 5 3 2 4 9 1 6 8 7 low high low high low high 5 3 2 4 1 9 6 8 7 low high high low .. 2020. 12. 23.
[자료구조] [C] 사람 이름 사전적 순서 정렬하는 DoubleLinkedList 이중연결리스트 사람의 이름을 사전적 순서로 정렬된 리스트를 유지하는 이중연결리스트를 구현하고 완성하시오. #include #include #include /* 사람의 이름을 사전적 순서로 정렬된 리스트를 유지하는 이중연결리스트 */ /* 컴퓨터공학과_김진엽*/ typedef char element; typedef struct person { element name[64]; struct person *next; struct person *prev; }person; person *first, *last; void init(); //리스트초기화 void dllsorted_insert(); //입력 void dlist_display(); //출력 int main() { int a; init(); for(;;) { puts(".. 2020. 12. 23.
[유닉스] make 정리 [ make ] 정의: -make는 각 파일 간의 종속 관계를 파악해 기술 파일(Makefile)에 기술된 대로 컴파일 명령이나 쉘 명령을 순차적으로 내린다. -make는 각 파일에 대한 반복적 명령을 자동화 시켜 개발자의 수고를 덜고, 시간을 절약할 수 있다. makefile 내용 all : diary #(1) diary : memo.o calendar.o main.o #(2) gcc -W -Wall –o diary memo.o calendar.o main.o #(3) memo.o : memo.c #(4) gcc -w -Wall -c -o memo.o memo.c #(5) calendar.o : calendar.c (6) gcc -w -Wall -c -o calendar.o calendar.c #(7).. 2020. 12. 23.
[유닉스] gdb 디버거 정리 [gdb 디버거] 디버거 사용하는 목적 특정 시점에서의 메모리 값과 레지스터 값을 확인하기 위함. 오류찾기 gdb란? GNU에서 만든 매우 강력한 디버거 gdb 사용하기 위해서는 –g 옵션을 붙여야한다 (디버깅 정보 삽입) 예: gcc –g –o a a.c -디버깅 정보란? 내부에 사용된 심볼 문자열과 심볼의 주소, 컴파일에 사용된 소스 파일, 컴파일된 각각의 인스트럭션들이 어떤 소스파일의 어떤 행에 해당되는지에 대한 정보 등을 말함. *기본 명령어 gdb 실행 : gdb 실행파일명 gdb 종료 : q 또는 Ctrl + d 소스보기 : l (기본 10행 출력) 나머지 부분 보려면 다시 l이나 enter키 특정행 보기: l 행번호 출력된 행 이전행 보기 : l - 특정 함수부분 보기 : l 함수명 다른 파.. 2020. 12. 23.
[유닉스] gcc 컴파일 정리 gcc 컴파일러란? GNU에서 만든 C컴파일러 컴파일 의미 인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 기계어로 번역하는 과정 컴파일 과정 like.c (c소스) -> cppo or cc1-E (전처리기) -> like.i (전처리 파일) -> cpp (c컴파일러) -> like.s (어셈블리파일) -> as (어셈블러) -> like.o (오브젝트파일) -> id or collect2 (링크) -> like 실행파일 전처리 과정 (cc1-E) 1. 헤더파일 삽입 (함수 사용 전에 함수 타입 선언 필요) 2. 매크로 치환 및 적용 어셈블리 소스 파일로 컴파일 과정 (cc1) (like.i -> like.s) like.i (전처리파일) -> front-end (C,C++,JAV.. 2020. 12. 23.