Computer Science
-
CALL, RET, 함수 호출Computer Science/컴퓨터 구조 2024. 4. 25. 13:13
어셈블리어 명령어 중 CALL, RET 정리하고 함수 호출 과정 정리.CALL 하나의 명령어지만 아래 작업을 내부적으로 수행현재 명령어 포인터(IP) 또는 프로그램 카운터(PC)의 다음 명령어 주소를 스택에 저장 (스택에 해당하는 메모리 주소에 값을 STORE)실행하려는 명령어 포인터(IP) 또는 프로그램 카운터(PC)로 점프 CALL 은 1바이트(opcode) + 명령어 주소 4바이트 (operand)로 구성. 명령어 주소는 오프셋을 의미한다. 즉 CALL로 실행하고자 하는 함수의 주소가 현재 명령어의 주소 + 오프셋으로 계산되어 점프한다. 점프하기 전에 현재 명령어의 다음 명령어의 주소를 스택에 PUSH 하는데, 이 다음 명령어의 주소는 현재 명령어의 주소 + CALL 명령어의 크기(보통 5바이..
-
TCP Keepalive 와 HTTP KeepaliveComputer Science/Network 2024. 2. 10. 01:01
TCP 사용되는 Keepalive 개념과 HTTP/1.1에서 사용되는 Keepalive의 개념이 어떤 차이가 있을까 TCP의 Keepalive와 HTTP의 Keepalive는 둘 다 하나의 커넥션으로 데이터를 주고 받는 점에서는 같다고 볼 수는 있다. 하지만 목적과 특성이 다르다. TCP Keepalive는 서버와 클라이언트 간의 연결을 유지하기 위한 목적이 있다. 반면 HTTP Keepalive는 불필요한 새로운 연결을 줄이고 기존 연결을 재사용함으로써 성능을 높이는 데에 목적이 있다. 또한 TCP Keepalive는 일정 시간 간격으로 payload가 없는 (0 or 1byte) 데이터를 전송하여 커넥션이 살아있나 확인하고 미리 설정된 일정 시간만큼 커넥션을 연장한다. 이는 좀비소켓을 방지하는 데에도..
-
파일 시스템Computer Science/OS 2023. 8. 19. 13:52
파일 시스템 FAT 파일 시스템과 유닉스 파일 시스템이 있다. 보조기억장치에 먼저 파티셔닝과 포매팅을 해야한다. 파티셔닝 : 논리적으로 영역을 구획하는 작업 포매팅 : 파일 시스템 결정하고 새로 데이터를 쓸 준비를 하는 작업 디렉터리 엔트리 디렉터리도 파일이고 테이블 형태로 데이터가 저장됨 파일이름, 위치 유추할 수 있는 정보, 생성 시간, 수정된 시간, 크기 등이 저장됨 파일 할당 방법 운영체제는 ‘블록’단위로 파일과 디렉터리를 읽고 쓴다. 이때 여러 블록 사용하는데 연속 할당과 불연속 할당(연결 할당, 색인 할당) 으로 나뉨 연속 할당 : 구현이 단순하지만 ‘외부 단편화’ 발생 (빈 공간이 남아도 사용하기 힘들다) 연결 할당 : 각 블록이 다음 블록을 가리키는 형태. 불연속적 이여도 괜찮다. C언어의..
-
가상 메모리Computer Science/OS 2023. 8. 17. 21:19
스와핑 메모리에 적재된 프로세스 중 오랫동안 사용되지 않거나 입출력 대기를 하는 프로세스들을 보조기억장치로 일부 영역 내쫓고 메모리의 빈 공간에 다른 프로세스를 적재하는 방식. 스왑 영역 : 보조기억장치에서 쫓겨난 프로세스들의 영역 스왑 아웃 : 프로세스가 메모리 -> 보조기억장치로 쫓겨남 스왑 인 : 보조기억장치 -> 메모리로 다시 복귀 스와핑으로 프로세스들의 요구 공간이 실제 메모리 크기보다 커도 실행 가능하게 된다. free -h 로 스왑영역 확인 가능 메모리 할당 프로세스의 메모리를 메모리 내에 빈 공간이 여러 개 있다면 어디에 적재하게 될까? 최초 적합 방식 : 가장 먼저 발견하는 빈 공간에 적재 최적 적합 방식 : 프로세스를 적재할 수 있는 공간 중 가장 작은 공간에 적재 최악 적합 방식 : ..
-
레지스터와 명령어 사이클Computer Science/컴퓨터 구조 2023. 8. 11. 00:42
레지스터 : CPU 제조사마다 다름. 여러 제조사가 공통 포함하는 레지스터 프로그램 카운터 : 메모리에서 읽어들일 명령어의 주소 저장 명령어 레지스터 : 메모리에서 읽어들인 명령어를 저장 -> 제어 장치가 이 레지스터의 명령어를 받아들임 메모리 주소 레지스터 : 메모리 주소를 저장. CPU가 읽어들이고자 하는 주소값을 버스로 보낼 때 주소 레지스터 거침 메모리 버퍼 레지스터 : 메모리와 주고 받을 값 저장. 메모리에 쓰고 싶은 값이나 전달 받은 값 저장. 데이터 버스로 주고 받고 이 레지스터를 거침 플래그 레지스터 : 연산 결과의 플래그 저장 범용 레지스터 : 자유롭게 사용하는 레지스터 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터 (스택 영역이라는 공간이 메모리에 따로 있다) 베이스 레지스터 : 기..
-
명령어의 구조Computer Science/컴퓨터 구조 2023. 8. 5. 16:08
기계어나 어셈블리어가 이루는 하나하나가 명령어이다. 명령어는 연산코드 (operation code) 와 오퍼랜드 (operand)로 이루어져 있음. 오퍼랜드는 없을 수도, 하나 있을 수도, 2개, 3개 있을 수도 있다. 연산코드는 CPU마다 다르지만 공통으로 사용하는 대표적인 연산 코드들이 있다. 그 종류는 아래와 같다. 1. 데이터 전송 2. 산술/논리 연산 3. 제어 흐름 변경 4. 입출력 제어 대표적인 연산 코드는 아래와 같다. 데이터 전송 MOVE : 데이터를 옮겨라 STORE : 메모리에 저장하라 LOAD (FETCH) : 메모리에서 CPU로 데이터를 가져와라 PUSH : 스택에 데이터를 저장하라 POP : 스택의 최상단 데이터를 가져와라 스택 ? 산술/논리 연산 ADD / SUBTRACT / ..
-
TCP 소켓 옵션Computer Science/Network 2023. 1. 28. 05:47
흔히 사용되는 소켓 옵션을 정리한다. SO_KEEPALIVE 이 옵션을 활성화하면 상대방에게 약 2시간 간격으로 TCP 패킷을 보낸다. 이 패킷에 대해 상대가 ACK 패킷으로 응답하면 응용 프로그램에 통보 없이 커널 선에서 살아 있음 확인하고 마무리한다. 아무런 응답이 없거나 RST 패킷을 받으면 자동으로 소켓을 닫는다. TCP 연결에서는 데이터 교환이 없는 건지, 상대 시스템이 다운되거나 네트워크 연결이 불가능한지 알 수 없다. 소켓 생성이 늘어나면 시스템 자원 소모도 비례해서 늘어나므로 연결이 끊어진 소켓을 닫아줄 필요가 있다. 이때 SO_KEEPALIVE를 설정하여 주기적으로 불필요하게 열린 소켓을 닫을 수 있다. 하지만 커널에서 주기가 보통 2시간으로 되어 있기 때문에 비정상적인 종료를 빠른 시간..
-
면접대비 CS - OS 정리Computer Science/OS 2020. 12. 8. 23:30
CS 예상질문 OS 멀티프로세스와 멀티스레드가 무엇인가요? 장점 : 여러 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽는것 이상으로 문제가 확산되지 않는다. 단점 : 문맥교환으로 인한 오버헤드가 크다 프로세스간 통신이 복잡하다. ( 파이프 소켓 메시지박스 공유메모리 ) 멀티스레드 - 하나의 프로세스 내에서 여러개의 스레드를 구성하여 작업을 처리하는것 장점 : 프로세스 내에서 스레드간 코드, 데이터, 힙 영역은 공유하고 각각 독립된 스택영역을 가진다.자원을 공유하기 때문에 자원을 덜 사용한다 그렇기 때문에 멀티프로세스보다 문맥교환으로 인한 오버헤드가 적다. 단점 : 공유자원 접근시 **동기화 문제**가 발생할 수 있다. 멀티프로세스 - 하나의 응용프로그램에서 여러개의 프로세스로 구성하여 작업을..