라벨이 컴퓨터 구조인 게시물 표시

CPU 작업과 I/O 작업은 어떻게 병행될 수 있는가 ?

이미지
다음 3개의 요인을 통해 CPU와 I/O 작업이 병행될 수 있음. 1. Interrupt 1.1 Device가 RAM에 요청된 데이터를 Load하는 작업이 끝나면 1.2 CPU에 Load작업이 완료되었다는 I/O Interrupt를 보냄. 1.3 CPU는 다시 RAM에 적재된 데이터를 통해 작업을 마저 수행할 수 있음. 2. DMA Controller DMA를 지원하는 환경이라면 - DMA를 통해 CPU의 도움 없이 직접 RAM에 접근 가능하다. - Device driver와 RAM이 직접 통신한다. 3. Device driver = 장치 드라이버 - OS와 Hardware 사이의 통신을 담당하는 소프트웨어. - Hardware의 ROM에 내장된 Firmware를 구동한다. - 제조사의 마이크로 프로세서에    하드웨어를 제어하는 명령들을 담은 firmware가 탑재되어 나오는데   CPU의 도움 없이 device specific한 작업을 수행할 수 있음. - 대형 운영체제들은 여러 겹의 Layer를 사용하는데   Firmware들에 대응할 수 있게 추상화된 레이어라고 볼 수 있다. 병행 작동 예 Device driver 상위 Layer에는 OS와 Application이 위치한다. OS는 Kernel로서 RAM에 적재되어 돌아가고 Application 데이터도 RAM에 적재되고 RAM에서 해제된다. 애플리케이션 코드가 수행되다가 필요한 데이터가 I/O장치에 있을 때는 API를 통하여 시스템 콜을 통해 OS가 대신 데이터를 애플리케이션에 전달한다. 이해를 돕기 위해 I/O 장치에 P1(프로세스1)을 기입한 것이고 실제 I/O에서 프로세스를 수행하는 것이 아님 ! [그림 참고] CPU가 작업 P1를 수행하다가 I/O 장치의 데이터가 필요해서 인출 작업을 I/O 영역에 맡긴다. CPU는 대기하고 있는 것이 아니라 P2라는 다른 작업을 수행한다. I/O장치는 P1과 관련된 데이터 인출 작업을 수행하고 인출 및 적재가 끝나면 CPU에 ...

빅 엔디언 대 리틀 엔디언

엔디언, Endianness 컴퓨터에서는 바이트 단위(8Bit)로 메모리 주소가 할당되고 바이트 이상의 데이터가 저장될 때는 1차원 메모리 공간에 여러 개의 연속된 대상을 저장한다. 엔디언은 1차원 메모리 공간에 데이터를 배열하는 방법이다. 특히 순서를 따져 바이트 를 배열하는 방법을 Byte order 라고한다. 데이터의 MSB, LSB 예시 데이터 0xA192645C  -> 4Byte int형 데이터  MSB = 0xA1 = 1010 0001 LSB = 0x5C = 0101 1100 같은 데이터라도  어떻게 해석하냐에 따라 다른 값이 나옴. Float - Big Endian Float - Little Endian UINT32 - Big Endian UINT32 - Little Endian . . . INT16 - Big Endian Int16 - Little Endian ... https://www.scadacore.com/tools/programming-calculators/online-hex-converter/ 온라인으로 쉽게 확인해볼 수 있다. 빅 엔디언 첫번째 메모리 주소에 데이터의 가장 높은 값 저장. 데이터가 49, 22, 21, 8, 92, 85, 55, 10 메모리 주소가 1 2 3 4 5 6 7 8  라면 메모리의 주소 1부터 순서대로 채워나간다. 데이터 값     49  22  21  08  92  85  55  10 메모리 index 01  02  03  04  05  06  07  08 사람이 숫자를 연속적으로 종이에 써 나갈 때의 순서와 같아서 디버깅할 때 보기가 편하다. - UNIX를 사용하는 RISC 프로세서 계열 - 네트워크 프로토콜에서 표준으로 사용하는 바이트 순서 https://cpusuite.blogspot.com/2024/10/bl...

바이트 정렬

바이트 정렬 메모리에 데이터를 저장할 때 바이트 순서를 나타내는 용어. 빅 엔디안 MSB(Most Significant Byte), 최상위 바이트부터 차례로 저장. 리틀 엔디안 LSB(Least Significant Byte), 최하위 바이트부터 차례로 저장. 시스템의 CPU, OS에 따라 방식이 다르다. - 파일에 데이터를 저장 - 파일로부터 데이터를 읽기 - 네트워크를 타고 데이터를 송/수신 하는 경우 바이트 정렬 방식을 따져야한다. 각 주체가 다른 방식으로 데이터를 취급하면 해석이 달라지기 때문이다. 예를 들어, 네트워크를 타고 패킷을 인터넷을 통해 전송할 때, IP주소 바이트 정렬 방식이 호스트<-> 라우터간 다르다면 잘못된 IP주소 해석으로 라우팅에 문제가 생긴다. 포트 번호의 정렬 방식이 다르다면 다른 프로세스로 데이터가 전달이 될 수 있다. 응용 프로그램에 도달한 후부터는 데이터 해석에 문제가 생길 수 있다. 보통 TCP/IP 프로토콜에서는 IP주소, 포트번호의 바이트 정렬 방식으로 빅 엔디안으로 통일하여 사용한다. 이를 네트워크 바이트 정렬이라고 부른다. 응용 프로그램에서도 대부분 네트워크 바이트 정렬을 사용하여 데이터를 해석한다.

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code 완주, 독후감

Blogger 커스터마이징 : CSS 수정 (sticky-header)