SWjungle/#컴퓨터시스템 4

Unix I/O

File 📌file 리눅스에서 file은 , 여러 바이트의 시퀀스이다. "모든 것이 파일이다" 모든 I/O device는 파일로 표현될 수 있다. /dev/sda2 -> /usr Disk Partition /dec/tty -> 터미널 디렉토리도 파일이다. 커널도 파일이다 /boot/vmlinuz-3.13.0-55-generic ~> 커널 이미지 /proc ~> OS 커널의 자료구조 당연히, 프로그램도 파일이다. /bin/ls : ls 프로그램 각 device와 데이터를 파일화 하는 이유는 커널이 이를 뽑아낼 수 있게 하기 위함이다. 즉, 모든 입출력 데이터를 파일화한다. 파일 관련 기본 unix i/o(system call) open() : 파일 열기 close() : 파일 닫기 read() : 파일 읽..

메모리 정렬과 패딩

📌클래스의 멤버가 저장되는 영역 및 메모리 차지 우선 클래스는 멤버 변수와, 멤버 함수를 가질 수 있고, 정적 그리고 비정적 멤버 변수, 함수를 가질 수 있다. 클랙스 타입의 객체 또는 인스턴스 자체의 크기는 비정적 멤버 변수만 영향을 미친다. 즉, 멤버 변수로 int형 변수 1개를 가지면 이 클래스의 인스턴스 sizeof는 4바이트, 2개를 가지면 8바이트, 비정적 멤버 변수는 객체 생성과 동시에 생성된다. 객체 내의 지역변수와 동일하므로 스택에 저장된다. 또한 비정적 멤버 변수는 클래스 내에서 공유되는 변수가 아닌 하나의 객체마다 할당되는 변수이다. 만약 클래스 내에 정적 멤버 변수를 선언했다면 이 변수는 객체 생성 시 할당되는 것이 아니라 프로그램 시작시 데이터 영역에 생성된다. 따라서 정적 멤버 ..

[컴퓨터 시스템 - 7장] 링커

링커 📌링킹 여러개의 코드와 데이터를 모아서 이를 연결하여, 메모리에 로드될 수 있고 실행될 수 있는 한 개의 파일로 만드는 작업이다. 💡링커의 링킹 과정 대부분의 컴파일 시스템은 사용자를 대신해 언어 전처리기, 컴파일러, 어셈블러, 링커를 필요에 따라 호출하게 만들어졌다. 이를 컴파일러 드라이버라고 한다. 예 ) gcc 드라이버 이렇게 만들어진 object file들을 링커가 링킹해서 실행파일로 만듭니다. 이 object파일은 재배치 가능한 목적 파일 📌정적연결 unix_ld와 같은 정적 링커들은 재배치 가능한 목적파일들과 명령줄 인자들을 입력으로 받아서 로드될 수 있고 실행될 수 있는 완전히 링크된 실행가능 목적파일을 출력으로 생성한다. 입력인 재배치가능 목적파일을은 다양한 코드와 데이터 섹션들로 이..

[컴퓨터 시스템 - 3장] 프로시저 / 배열의 할당과 접근

데이터의 형식 📌어셈블리 자료형 파이썬과 같은 매우 고급진 언어에서는 list, map, string 등과 같은 편리한 자료형들이 있다. C는 정수, 실수 자료형만 있고, 그 외 struct, array와 같은 기초적인 자료형들이 있다. 그렇다면, 어셈블리어는 어떨까 ? 어셈블리어는 오직 정수, 실수 자료형만 존재하며 array가 없다. 물론 명시된 array가 없을뿐, c와 array 표현방식이 같다. 왜냐하면 연속하는 메모리 공간을 사용하면 array라고 생각할 수 있기 때문이다. 어셈블리 정수 자료형은 1,2,4,8byte 짜리가 존재 실수 자료형은 IEEE 754(부동소수점 표현)에 맞춰 4, 8, 10byte가 존재 포인터는 전부 정수자료형으로 표현된다. 즉 정수 자료형은 값을 의미할 수도, 주..