전체 글
-
프로그램 버그 예시보안개론 2024. 5. 19. 01:16
- 루프void main() { float = 0.1; while( x != 1.1 ) { x = x + 0.1; printf("x = %f\n", x); if(x > 3) break; }}컴퓨터 특성 상 실수 연산은 완전히 정확하지 않음.저 루프가 운이 좋으면 끝나겠지만 아니면 무한 루프가 될 것 - 문법 문제int k = 1;int val = 0;while( k = 10 ) { val++; k++;}printf("k = %d, val = %d\n", k, val);k == 10 으로 해야 함 - 메모리 에러char buffer[5] = "Great";int id_seq[3];id_seq[-1] = 123;id_seq[1] = 123;id_seq[2] = 123;id_seq[3] = 12..
-
IP 구조, Fregmentation네트워크 2024. 5. 6. 23:49
네트워크 레이어 프로토콜IPICMP - 에러 리포팅, 라우터 시그널링Routing protocols(라우터끼리 데이터 교환할 때 사용): RIP, OSPF, BGF ** ICMPIP는 에러 신경 안씀, 신경써야 하면 ICMP 사용 IP 구조verhead. lentype of servicelength16-bit identifierflagsfragment offsettime to liveupper layerheader checksum32 bit source IP address32 bit destination IP addressoptions (if any)data(variable length, typically a TCP or UDP segment)ver : IPv4, IPv6head. len : 헤더 길이 ..
-
네트워크 스케줄링 메커니즘네트워크 2024. 5. 6. 17:42
네트워크에서의 스케줄링: 다음에 링크로 보낼 패킷을 고르기 FIFO (First in first out) Scheduling온 순서대로 보냄 discard policy -- 큐가 넘치면 뭐부터 버릴 것이냐- tail drop: 큐가 차면 오는 걸 버림- priority: 우선순위를 두고 버림- random: 아무거나 버림 Priority Scheduling높은 우선순위를 가지고 큐잉된 패킷을 먼저 보냄정확히는 우선순위가 높은 큐를 우선순위가 높은 큐에 넣고,우선순위가 높은 큐에서 먼저 빼내서 출력하는 것 RR (Round Robin) scheduling여러개의 큐를 두고, 각 큐에서 순차적으로 패킷을 꺼내는 스케줄링 방법 WFQ (Weighted Fair Queuing) schedulingRR + Pri..
-
라우터 내부, switching fabric네트워크 2024. 5. 6. 17:23
라우팅(컨트롤 플레인) -> 소프트웨어로 처리포워딩(데이터 플레인) -> 하드웨어로 처리 인풋 큐에 들어온 데이터 그램을 어디로 보내야 할지 어떻게 판단하는가1. IP 주소만 보고 판단 (Destination-based forwarding)2. IP 헤드 정보를 보고 판단 (Generalized forwarding) Destination-based forwarding포워딩 테이블로 목적지 주소를 출력 링크에 매핑 Longest prefix matching어떤 IP 주소가 있을 때 테이블에 있는 IP 주소중 가장 길게 일치하는 쪽으로 포워딩ex)00000000 00000000 00000??? ???????? | 000000000 00000000 00001000 ???????? | 100000000 ..
-
네트워크 레이어, 포워딩과 라우팅네트워크 2024. 5. 6. 16:31
네트워크 레이어에서는 송수신자 간 '데이터그램' 을 주고 받음이때, 네트워크 레이어 프로토콜은 모든 호스트와 라우터에게 있음정확히는 호스트는 라우터에 포함됨 포워딩(Forwarding) = Data Plane한 라우터에 인풋으로 들어온 패킷을 어느 출구로 보낼 지 결정하는 것-> 테이블이 있어서 그걸 보고 연결 라우팅(Routing) = Control Plane전체 라우터에서 패킷의 경로를 설정함 컨트롤 플레인(라우팅) 방식- 전통적인 방식각각의 라우터끼리 협조해서 경로 설정 - SDN(Software Defined Networking)라우터의 정보를 상위로 보내고(서버), 상위에서 경로를 지정해줌 네트워크 서비스 모델각각의 패킷 -> 전달 보장, 시간 보장전체 서비스 -> 순서, 원활한 흐름보장 하는..
-
I/O Device, Device Driver운영체제 2024. 5. 6. 16:03
디바이스 디바이스를 볼 때는 버스를 중심으로 보게 된다과거 - 계층 구조- 메모리 버스(시스템 버스): CPU와 메모리 용도. 빠르고 비싸고 짧음- I/O 버스: SCSI, SATA, USB.. 느리고 싸고 긺** I/O버스 중 빠른 애들은 별도의 버스 사용 (그래픽 카드) 모던 시스템멀티코어, 누마 시스템 등.. -> 네트워크 형태Special interconnect: Memory interconnect, Graphic interconnect- Memory interconnect : 메쉬 형태. (QPI = QuickPath Interconnect, Hyperport)- Graphic interconnect (PCIe = Peripheral Component Interconnect Express.. 주..
-
데드락운영체제 2024. 5. 6. 14:43
컨커런시 버그 (타이밍 버그)발생할 수도 있고 아닐 수도 있음 종류논 데드락 버그원자성 위배- 스레드들이 동시에 동작할 경우 문제가 됨- 락으로 해결 오더링 문제- 특정 스레드 이후에 실행되는게 보장되어야 문제가 없는 경우- 조건변수나 세마포 사용데드락 (교착 상태)2개 이상의 스레드가 발생하지 않을 사건을 기다리게 되는 사건 4가지 조건을 모두 만족해야 발생1. Mutual exclusion2. Hold-and-Wait3. No preemption for resource4. Circular wait 데드락의 대처1. 데드락 예방2. 데드락 회피3. 데드락 발견 및 회복 데드락 예방1. Hold-and-Wait 없애기모든 락을 한번에, 원자적으로 잡아야 함-> 큰 락을 잡고 락1, 락2.. 를 잡을 수 ..
-
Semaphore (세마포)운영체제 2024. 4. 18. 23:02
락을 위해서도 조건변수를 위해서도 사용 가능 sem_init(semaphore, p_shared, initial_value) semaphre : 사용할 세마포 p_shared : 프로세스 간 쉐어, 안하면 0으로 설정하면 됨 initial_value : 이걸 어떻게 사용할 건지에 따라 바이너리 세마포, 카운팅 세마포. 사용법이 다름 int sem_wait(sem_t *s) // 세마포의 값을 1 내리고 음수면 웨이트 int sem_post(sem_t *s) // 세마포의 값을 1 올리고 대기 중인 스레드 하나 꺠우기 두 함수를 사용해서 세마포 사용 sem_t m; sem_init(&m, 0, 1); sem_wait(&m); // critical section sem_post(&m); 락으로 사용하는 경우..