본문 바로가기

반응형

전체 글

(38)
객체 지향 3대 특성 1. 캡슐화 : 객체를 필드, 메소를 묶어 실제 구현 내용을 감추는 것 외부 객체는 해당 객체에 대한 구현내용을 알지 못한다 외부에 잘못으로 인한 객체 손상을 막음 2. 상속 : 상위 객체의 필드와 메소드를 하위 객체가 사용할 수 있도록 함 동일한 구현을 줄여주며 쉽고 빠르게 설계가 가능하게 함 3. 다형성 : 하나의 타입에 여러 객체를 대입하므로써 여러 기능을 사용할 수 있게함 // 다형성(Polymorphism)의 사용 예 #include using namespace std; class Calculator { protected: int m_a; int m_b; public: void SetOprands(int a,int b) { m_a = a; m_b = b; } void run() { Sum(); ..
IPC(파이프, 메시지큐, 공유 메모리, 시그널) 파이프 :부모의 프로세스가 생성된 자식 프로세스에게 단방향으로 데이터를 전달하는 방법파이프 기법은 부모 프로세스가 자식 프로세스에게 전달하는 기법(단방향 통신) pipe로 먼저 생성 후 fork 로 자식 프로세스 생성하고 부모가 write(fd[1], 메시지내용, 크기) 자식은 read (fd[0], 받은버퍼, 크기)로 하여 통신한다 #include #include #include #define MSGSIZE 255 char* msg = "Hello Child Process!"; int main() { char buf[255]; int fd[2], pid, nbytes; if (pipe(fd) < 0) // pipe(fd) 로 파이프 생성 exit(1); pid = fork(); // 이 함수 실행 다음..
시스템콜 , 프로세스 생성 프로세스 id 가져오기, 부모프로세스 id 가져오기 (응용프로그램 - API - 커널) #include #include #include int main() { printf("pid = %d\n", getpid()); printf("ppid = %d\n",getppid()); return 0; } 기본 프로세스 생성 과정 1. 공간을 잡는다 2. CODE, DATA, BSS 공간을 잡는다 (프로세스 이미지 업로드) 3. 실행하여 STACK, HEAP이 할당된다 fork() 시스템콜 부모와 동일한 별도의 자식 프로세스를 생성하고 PC레지스터는 부모와 자식 프로세스는 다음 주소로 간다 fork()를 실행한 뒤에 자식프로세스가 생기므로 프로세스는 2개가 되고 자식 프로세스의 pid는 0이고, 부모 프로세스는 그..
프로세스 ID 프로그램 : 실행파일, 바이너리, application 프로세스 : 메모리에 적재된 프로그램과 프로세스 정보(PCB) 유닉스는 기본적으로 프로세스에 싱글 스레드 된 상태로 시작됨 프로세스 최대 개수는 2^15인 32768개이다 sudo vi /proc/sys/kernel/pid_max 에서 확인할 수 있다 유닉스가 시작될 때 운영체제에서 pid가 1로 init 시켜 프로세스를 생성해둔다 이후 새로운 프로세스를 생성할 때 마다 부모와 자식관계로 생성한다 ps -ef 로 해당 내용을 확인할 수 있으며 (-e : 시스템상의 모든 프로세스에 대한 정보 출력, -f 다음 목록 출력(UID, PID, PPID, CPU%, STIME, TTY, TIME, CMD) 첫번째는 소유자이름, pid, 부모pid 이다. (s..
ABI와 표준 동적 라이브러리 vs 정적 라이브러리 동적 라이브러리는 exe에서 해당 함수가 호출될 때 프로세스에 올려져서 호출된 함수를 실행시켜준다 정적 라이브러리는 exe와 함께 묶여서 빌드가 되는 형태 라이브러리 유닉스 C 라이브러리 : libc 리눅스 C 라이브러리 : glibc (지립씨, 글립씨) 컴파일러 유닉스 컴파일러 : cc 리눅스 컴파일러 : gcc ABI (Application Binary Interface) : API는 Programming Interface 인 반면 응용프로그램과 라이브러리, 함수 실행 방식, 레지스터 활용 등을 약속한 인터페이스이다. ABI가 호환되면 재컴파일 없이 동작한다. 유닉스와 리눅스가 호환이 안되는 큰 이유는 ABI가 맞지 않아서 이고 두번째는 시스템콜이 달라서이다. P..
하드링크와 소프트링크 복사 : 동일한 파일을 똑같이 생성하는것 cp [-옵션][원본파일이름][복사할파일이름] (예 cp -rf source destination) r은 디렉토리 내부(서브디렉토리, 파일)까지 복사 , f은 force 하드링크 (파일만 가능, 디렉토리 X) 동일한 inode를 가리키는 파일을 생성하는것 inode 파일이 10GB일때 하드링크를 하면 링크만 생성하여 연결하는것이라 파일 크기가 작으며(복사는 inode가 동일하게 복사되어 10GB + 10GB가 된다), inode 이름은 같다(ls -i로 조회가능) 원본 파일을 수정할 시 동일하게 수정되며, 원본 파일을 삭제해도 inode는 남아있다 (inode 정보에 link count가 있어 하드링크를 한 상태면 하드링크가 다 사라질 때까지는 삭제 되지 않는다)..
foreground, background, 프로세스 관리 프로세스와 바이너리 코드 이미지 or 바이너리 : 실행파일 프로세스 : 실행중인 프로그램 foreground와 background foreground : 쉘에서 해당 프로세스를 실행 후 종료될때까지 사용자가 다른 입력을 하지 못하는 프로세스 (예시 ./loop) ctrl + z : 프로세스를 실행 중지상태로 바꿈 bg [작업번호] : 중지된 프로세스를 background 프로세스로 실행되게 함 (예 bg 2) ctrl + c : 프로세스 종료 (운영체제 인터럽트가 시그널로 프로세스에 보냄) background : 사용자 입력과 상관없이 실행되는 프로세스 (예시 ./loop & , find / -name '*.py' > list.txt &) * 결과값이 [1] 57 이런식으로 나오는데 앞의 [1]은 작업 ..
표춘입출력 ,리다이렉션,파이프 찾기 grep : 검색 명령 - grep [-option][pattern][file or directory name] (예시 : grep sol file.txt 는 file.txt에서 sol이라는 문구가 들어간 모든 행 출력) -i : 영문의 대소문자 구별 x -v : pattern을 포함하지 않는 라인 출력 -n : 검색 결과의 각 행의 선두에 행 번호 넣음 -l : 파일명만 출력 -c : 패턴과 일치하는 라인의 개수만 출력 -r : 하위 디렉토리까지 검색 예시) - grep -n sol files.txt : files.txt에 sol 이라는 문구의 행 번호를 넣어서 모든 행 출력 - grep -r sol filesDirectory :filesDirectory의 폴더내의 모든 파일 중 sol 이라는 문..

반응형