메모리 구조에 대해서 어렴풋이만 알고 있는 것 같아 제대로 정리해보려고 합니다. 주 메모리 메모리는 크게 커널(kernal) 영역과 유저(User) 영역으로 나뉘어지고, 커널 영역에는 운영체제가 적재되고 유저 영역에는 일반 프로세스가 적재됩니다. 프로그램이 실행되기 위해서 프로그램이 주 메모리(RAM)에 load되어 프로세스가 되어야합니다. 또한, 프로그램 중에 사용할 변수와 데이터들을 메모리에 저장하여 사용합니다. 유저 영역에 적재되는 프로세스의 메모리 구조는 아래와 같습니다. 유저 영역 메모리 구조 메모리 구조는 크게 코드, 데이터, 힙, 스택 영역으로 나뉩니다. 운영체제가 실행 프로그램을 위해서 공간을 4가지로 할당해줍니다. 1) 코드(Code) 영역 실행할 프로그램의 코드가 저장되는 영역으로 텍스..
주소 바인딩 논리적 주소 = 가상 주소 : 프로세스의 주소공간 가상 메모리 : 메모리 관리 기법. 컴퓨터가 실제 이용가능한 메모리자원을 추상화하여 매우 큰 메모리로 보이게 만드는것 물리적 주소 : 물리적 메모리에 실제로 올라가는 위치 cpu가 기계어를 수행하기 위해 논리적(가상) 주소를 통해 물리적 메모리의 어느 위치에 있는 지 확인해야함. 이렇게 논리적 주소를 물리적 주소로 연결해주는 작업을 주소바인딩이라고함. 1) 컴파일 타임 바인딩 : 프로그램을 컴파일 할 때 물리적 메모리 주소가 결정되는 방식 물리적 메모리가 컴파일 시 알려짐 시작 위치 변경 시 재컴파일 절대주소로 적재된다는 뜻에서 절대코드를 생성하는 바인딩 방식 비현실적이고 현대의 시분할 컴퓨팅 환경에선 잘 사용안함 2) 로드 타임 바인딩 : ..
리눅스에서 네트워크 소켓 프로그래밍을 이용해 파일을 다운로드하고 업로드할 수 있는 클라이언트와 서버를 만들어보았다. - 파일 전송 서버는 서버에서 실행중이며 클라이언트가 다운받고자 하는 파일을 전송하는 역할을 한다. - 파일 전송 클라이언트는 서버에 전송할 파일을 선택하여 전송(업로드)한다. - 클라이언트는 접속한 디렉토리에 대해서 파일을 업로드, 다운로드 하도록 한다. - text파일과 binary 파일 모두 전송이 가능하도록 한다. 명령어들은 다음과 같이 구현했다. cd : 현재 디렉토리 이동, get : 다운로드 명령, put : 업로드 명령, quit : 종료 명령 #include #include #include #include #include #include #include #include #d..