목록 Computer Science (93)
User system commands - 기본적인 리눅스 시스템 기본 명령어를 공부하였다. option - 명령어 뒤에 -x, --x 이 붙어 부가 옵션을 주는 것을 "옵션 또는 파라미터를 주다"라고 표현한다. manual - man + (command) 를 이용하여 명령어의 디테일한 도움말을 확인할 수 있다. manual page에서는 방향키로 라인을 넘길 수 있고, b와 space키로 페이지를 전환한다. /(something) 을 입력시 페이지 내에서 검색하고자 하는 something을 탐색할 수 있다. n을 이용하여 다음 단어로 넘긴다. q로 페이지를 종료한다. - option으로 명령어 뒤에 -h, --help를 입력하는 것으로 도움말을 얻을 수 있다. autolisting - 명령어 사용시 ta..
Linux - 리눅스를 공부해보고 싶어 우분투를 설치하였다. 아직 잘 모르지만 기본 시스템 사용, 시스템 관리, 네트워크 서버 구축, 보안/ 해킹을 공부해보고자 한다. Ubuntu - 우분투는 리눅스의 여러 배포판 중 현재 가장 인기있는 것으로 서버 / 데스크탑 두 버젼이 존재한다. - 우분투 데스크탑을 선택하여 18.04 LTS를 설치하였다. LTS는 long term support의 약자로 장기 지원 버전을 의미한다. Ubuntu Ref - 아래 책과 강의를 참고하였다. 리눅스의 모든 것 -서자룡 Linux & Unix shell programming - David tansley
Segmentation - 앞서 설명한 페이징 기법은 가상 메모리를 페이지, 즉 물리적인 블록 단위로 분할하여 프로세스의 측면에서 메모리를 관리하는 방식이다. 이번에 공부한 segment 역시 메모리를 더 효율적으로 관리하기 위한 기법 중 하나이다. segment - segment는 가상 메모리를 서로 다른 크기의 논리적인 영역으로 분할하고 메모리를 할당한다. 페이징 기법의 페이지 테이블 처럼 Segment table을 이용하여 사용자가 가상 메모리를 사용한 주소를 실제 주소에 맵핑하는 정보를 저장한다. Process segments - 프로그램이 메모리에 올라갈 때 세그먼트로 나눠지는 구성을 이야기한다. -Allocate in compile Code segment : 프로그램 코드 자체를 저장. Dat..
Memory Address - 메모리 공간은 메모리 주소를 식별자로 하여 의미를 갖는다. 이 주소로 메모리 공간이 식별되어 프로그램이나 하드웨어 장치가 os를 통해 데이터를 일정 공간에 저장하고, 읽어 올 수 있는 것이다. Physical Address - Physical Address는 RAM에 실제로 존재하는 메모리 공간 (Main memory)를 식별하기 위한 주소이다. Virtual Address - Virtual Adrress는 이와 반대로 실존하지 않는 메모리 공간 (Virtual memory)를 식별하기 위한 주소이다. 가상 메모리는 없는 공간을 마치 있는 것처럼 사용하기 위한 공간이다. 주기억 장치와 동시에 보조 기억 장치에 페이징 파일을 작성함으로써 이 둘을 동시에 하나의 메모리로 생각할..
Memory - 메모리는 정보를 읽고 쓰는 공간, 기억 장치를 의미한다. 이전에 Storage 포스팅에서 공부했듯, cpu가 직/간접 참조 가능 여부에 따라 크게 Main memory(primary storage)와 Secondary memory로 나뉜다. 일반적으로 메모리를 말할 때는 보통 Primary storage, 거기서도 RAM을 가리킨다. RAM - RAM은 Random Access Memory의 약자로 자유롭게 읽고 쓸 수 있는 휘발성 메모리이다. CPU가 처리한 연산 정보를 저장하고 읽는 공간 역할을 한다. Random Access는 임의의 정보를 할당할 수 있다는 의미에서 붙여졌다고 한다. 메모리 주소만 알면 어느 위치의 데이터든 같은 시간의 소비로 할당할 수 있다는 것을 의미한다. 다만..
Inter Process Communication IPC - 프로세스는 독립된 메모리 공간을 참조하기 때문에, 서로의 데이터에 독립적이다. 이런 독립된 프로세서가 서로 통신하는 방법(IPC)을 공부하였다. Unnamed Pipe - 파이프는 여러개의 프로세스의 입출력을 연결한다. 파이프는 단방향이기 때문에, 한 파이프는 한쪽 프로세스의 입장에서 읽기 혹은 쓰기 중 하나의 역할만으로 사용된다. 따라서 파이프를 이용해 양방향 통신을 위해선 두 파이프가 필요하고, 여러 프로세스와 통신할 경우 그에 따른 서로 다른 파이프를 필요로 한다. - unnamed pipe(익명 파이프)는 부모-자식 관계처럼 프로세스간의 관계가 명확할 때 사용된다. 또, 사용하는 프로세스가 실행 중일 때만 존재한다. Named Pipe ..
- quora에서 0.3이 왜 0.2+0.1과 다른 값인지에 대한 질문을 볼 수 있었다. 이는 한마디로 소수를 2진수로 표현하는 정밀도의 문제이다. Precision - c#에서 (0.3 == 0.1+0.2)는 거짓이다. 그리고 0.2f + 0.1 값을 확인하면 0.300000002980232이다. 이는 소수를 2진수로 표현하는데 있어 분명한 한계가 있기 때문이다. 컴퓨터는 계산에 있어 2진수를 사용해야만하고, 0.1과 0.2는 2진수로 정확한 값이 아닌 순환 소수로 절대 표현할 수 없는 수를 자료형에 따른 정밀도로 가져와 연산된다. 이를 다시 10진수로 표현하면 오차가 발생하고 이 때문에 위의 당연한 계산조차 거짓으로 판명되는 것이다. c#에서는 decimal 자료형을 사용하는 것을 통해 이를 해결할 ..
Exclusive control(배타적 제어) - 여러 개의 프로세스가 하나의 공통된 자원을 액세스하면 잘못된 처리를 야기할 수 있다. 이를 막기 위해 처리가 끝날 때까지 한 프로세스에서 자원을 독점하고 처리 후 다른 프로세스에게 넘기는 것, 즉 자원을 한 프로세스에서 독점시키는 것을 Exclusive control, 배타적 제어라고 한다. plus) 공유 잠금은 다른 프로세스가 데이터에 참조는 할 수 있지만 변경은 하지 못하고, 배타 잠금은 다른 프로세스가 데이터에 참조, 변경 모두 불가능한 잠금을 의미한다. Semaphore - 지정된 수의 프로세스만 공유 자원을 엑세스 하도록 제어하는 장치이다. 카운터를 지정하고, 엑세스하는 프로세스마다 카운터를 하나씩 줄여 0이된다면 OS는 이를 확인하고 더이상의..