컴퓨터 시스템

컴퓨터 시스템

Proxy? 프록씨!b👍

프록씨 서버란? 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용프로그램을 말함 서버와 클라이언트 사이에 중계기라고 생각, 대리 통신하는걸 프록시라고하고 그 역할 하는게 프록시 서버임 prox씨 특징 pc와 외부 인터넷 사이의 중계기 역할 --> 중계를 해주기때문에 외부 인터넷에서 client의 정보를 알수없음 외부 인터넷의 내부 침입을 막는 방화벽과 관련있음 캐시기능(왜? 이따 설명)있어서 전송시간 절약 및 불필요한 외부 연결 안함 -> 외부 트래픽 줄임 -> 네트워크 병목(bottle neck 진짜 병목이네;)현상 줄임 IP를 바꾸기위한 용도로 많이 사용한다. -> 무료 프록시 서버 사용으로 다른나라 ip로 우회가능 client -> proxy..

컴퓨터 시스템

메모리 구조

커널 영역과 사용자 영역 메모리는 쉽게 커널영역과 사용자 영역으로 나뉜다. 흔히들 ctrl + alt + delete를 눌렀을때 나타나는 성능탭에서 진한 부분이 커널 영역 연한 부분이 사용자 영역이다. 사용자 영역은 스택영역, 힙 영역, 데이터 영역, 코드 영역으로 나뉘며 사용자 영역을 제외한 부분은 커널 영역이다. 여기서 커널은 운영체제의 핵심이며 시스템의 모든것을 통제한다. 코드 영역 - 시스템이 알아들을수 있는 명령어가 저장되어 있는 영역 CPU가 데이터를 수행할때 하나의 명령만 수행함 데이터 영역 - 전역변수와 정적변수가 저장되는 영역(전역변수 - 다른파일에서 사용가능, 정적 변수 - 해당파일 scope에서만 사용 가능) 힙 영역 - 동적할당된 변수가 들어가는 영역 동적 할당? 필요한 크기만큼 공..

컴퓨터 시스템

프로그램의 기계수준 표현, 링커

프로시저란? 함수는 return address를 남기며 전부다 플래그를 남기고 이동하지만 프로시저는 return address를 남기지 않고 스택에 필요한 값만 저장한뒤 이동한다. 가장 큰 차이점은 속도이다. 7. 링킹이란? 여러개의 코드와 데이터를 모아서 연결하여 메모리에 로드할수있게, 실행할 수 있게 한개의 파일로 만드는 작업! 링커에 의해 자동으로 수행된다. 자동으로 되는데 왜 공부해야함? --> 큰규모의 프로그래밍에서 종종 모듈이 없어서 라이브러리가 없어서 또는 맞지않는 라이브러리 버전에 의해 링커 에러가 발생한다. 어떻게 링커가 참조를 해결하기위해 라이브러리를 사용하는지 이해하지 못한다면 해결하기 힘들 것이다. 기타 등등 암튼 공부하는게 좋다. 네.. 7-1. 컴파일러 드라이버

컴퓨터 시스템

동적 메모리 할당(Malloc과 Free, calloc, realloc)

동적 메모리 할당(Dynamic Memory Allocation) - 입력 되는 데이터에 맞게 기억공간을 확보하는 것 정적 메모리 할당(Static Memory Allocation) - 프로그램을 작성하는 단계에서 필요한 기억공간의 크기를 결정하는 것 우리는 일반적으로 배열을 선언할때 정적 메모리 할당을 사용한다. char examples[10]; 이렇게 하면, char 자료형 10개가 나란히 선언되고, examples 배열에는 10개의 자료형 밖에 못들어간다. 왜 동적 메모리 할당을 해야하는가? 정적 메모리 할당을 하게되면, 기억공간이 낭비될 경우가 많다. 예를 들어, 위의 선언한 char형 배열 examples에 만약 "hello"만 넣는다면, 5바이트가 또 낭비되는 셈이다. 고로, 메모리 낭비를 최..

컴퓨터 시스템

Red-Black 트리

Red-Black 트리란 - 이진 탐색 트리(BST)의 한 종류로 스스로 균형을 잡는 트리로써 BST의 worst case(한쪽으로 편향이 되어있는 상태에서 삽입 삭제 검색의 시간 복잡도는 O(N)으로 오래걸린다.)의 단점을 개선했다. 모든 노드는 red혹은 black으로 표현 Red-Black트리의 5가지 속성 1. 모든 노드는 red 혹은 black 2. 루트 노드는 black 3. 모든 nil(leaf) 노드는 black * 중요nil 노드란? - 존재하지 않음을 의미하는 노드, 자녀가 없을 때 자녀를 nil 노드로 표기, 값이 있는 노드와 동등하게 취급, RB트리에서 leaf 노드는 nil 노드(파란색 동그라미) 4. red의 자녀들은 black 즉 red가 연속적으로 존재할 수 없다. 5. 임..

컴퓨터 시스템

Ubuntu 리눅스 명령어 정리

ls: 내 위치의 모든 파일을 보여준다. pwd: 내 위치(폴더의 경로)를 알려준다. mkdir: 내 위치 아래에 폴더를 하나 만든다. cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다. cd .. : 나를 상위 폴더로 이동시킨다. cp -r [복사할 것] [붙여넣기 할 것]: 복사 붙여넣기 rm -rf [지울 것]: 지우기 sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다. sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴) 관리자 모드로 진입하기 sudo su vi에디터를 이용해 코딩을 하면 된다 Vi [만들파일명].c : c파일 만들기 코드 작성창 나옴 vi 명령어 다른건 몰라도 반드시 command + z의 기능을 하는 u는 외우자 다 작성하면 esc 눌러서 ..

컴퓨터 시스템

Chapter 1 컴퓨터 시스템으로의 여행

1-1 정보는 비트와 컨텍스트로 이루어진다. 프로그램은 프로그래머가 에디터로 작성한 소스 파일(0,1로 표시되는 비트의 연속 바이트라는 8비트 단위이다)로 생명을 시작하며 텍스트 파일로 저장된다. 소스 프로그램에서 각 바이트는 프로그램의 텍스트 문자를 나타낸다. 대부분의 컴퓨터 시스템은 텍스트 파일을 아스키(ASCII)표준을 사용하여 표시한다.(각 문자를 바이트 길이의 특정 정수값으로 나타냄) 연속된 바이트로 파일에 저장되는데 이것을 텍스트 파일이라 부른다. 다른 모든 파일들은 바이너리 파일이다 * 모든 시스템 내부의 정보, 디스크파일, 메모리상의 프로그램, 데이터는 비트들로 표시된다. 서로 다른 객체들을 구분하는 유일한 방법은 이들을 구분하는 유일한 방법은 컨텍스트에 의해서다. ex) 동일한 일련의 바..

김상주
'컴퓨터 시스템' 카테고리의 글 목록