음. 방학동안 내가 머물고 있는 동아리..(?) SOLUX에서 Embeded Study를 하는데 참여 했다.
하는일이 많아서 (ㅜㅜ) 청강으로 해서 따로 숙제는 없지만.(없어도 공부하는게 맞는일이긴 하지 ㅋㅋ)
지금 시간이 남는 관계로 ( 학생서비스센터에서 인턴을 하는데 신입이라 아무일도 안하고 있다...)
숙제였던 용어정리다.
1. RTOS 모듈화
2. 선점형 멀티태스팅
3. 스케쥴링
4. 통합개발환경
5. PCB
from http://ko.wikipedia.org/wiki
프로세스 제어 블록(Process Control Block, 줄여서 PCB)은 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영 체제 커널의 자료 구조이다. 작업 제어 블록(Task Control Block, 줄여서 TCB) 또는 작업 구조라고도 한다. "PCB는 운영 체제가 프로세스를 표현한 것이다."
< 포함 정보 >
운영체제에 따라 PCB에 포함되는 항목이 다를 수 있지만, 일반적으로는 다음과 같은 정보가 포함되어 있엉.
프로세스 식별자(Process ID)
프로세스 상태(Process State) : 생성(new), 준비(ready), 실행(running), 대기(waiting), 완료(terminated) 상태가 있다.
프로그램 계수기(Prgoram Counter) : 프로그램 계수기는 이 프로세스가 다음에 실행할 명령어의 주소를 가리킨다.
CPU 레지스터 및 일반 레지스터
CPU 스케줄링 정보 : 우선 순위, 최종 실행시각, CPU 점유시간 등
메모리 관리 정보 : 해당 프로세스의 주소 공간 등
프로세스 계정 정보 : 페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등
입출력 상태 정보 : 프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등
< PCB의 위치 >
PCB가 프로세스의 중요한 정보를 포함하고 있기 때문에, 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 남는다. 일부 운영 체제에서 PCB는 커널 스택의 처음에 위치한다. (이 메모리 영역은 편리하면서도 보호를 받는 위치이기 때문이다.)[2]
6. Porting
【컴퓨터】 이식(移植) 《다른 기종의 컴퓨터로 소프트웨어를 옮기기》
한 시스템에 사용될 목적으로 개발된 소프트웨어를 다른 시스템에서도 작동 하도록 수리/재구축 하는 것을 말한다.
일반적으로 소프트웨어는 특정의 하드웨어나 OS에서 작동하도록 설계되 있으며, 다른 환경에 이식해더라도 정상적으로 작동하지 않는 경우가 많다. 이 때. 소스코드의 재작성이나 리컨파일을 하여, 그 환경에서도 작동 하도록 소프트에어를 구축하는 것을 이식, 또는 포팅이라고 한다. 이식의 용이성을 나타내는 말로 [포터비리티]가 있다.
7. ETX2,3 / NTFS, local file system
ETX3 http://ko.wikipedia.org/wiki/Ext3
NTFS (NT file system) from http://www.terms.co.kr/NTFS.htm
NTFS는 윈도우NT 운영체계가 하드디스크 상에 파일들을 저장하고 검색하는데 사용하는 시스템이다. 윈도우NT에서 NTFS의 역할은, 윈도우95의 FAT이나 OS/2의 HPFS에 해당하는 것이다. 그러나, NTFS는 FAT이나 HPFS에 비해 성능이나 확장성 및 보안성 면에 있어, 많은 개선점들을 제공한다.
특히 주목할만한 NTFS의 기능들은 다음과 같다.
파일 클러스터들을 추적하기 위해 b-tree 디렉토리 개념을 사용
파일의 클러스터들에 관한 정보와 다른 데이터들이 각 클러스터에 함께 저장된다 (FAT는 관리용 테이블만이 저장된다)
최대 264, 즉 대략 160억 바이트 정도의 매우 큰 파일도 지원
서버 관리자가 ACL을 이용하여 누가 어떤 파일만을 액세스할 수 있는지 등을 통제 가능
통합된 파일 압축
유니코드 기반의 파일이름 들을 지원
긴 파일이름을 지원
교체용 디스크와 고정 디스크 모두에 대해 데이터 보안을 지원
NTFS 동작원리
하드디스크는 초기화(포맷)될 때, 물리적인 전체 하드디스크 공간이 파티션으로 나뉘어진다. 운영체계는, 각 파티션 내에 저장된 모든 파일들에 대한 상황들을 계속 추적한다. 각 파일은 실제로 하드디스크 상의 하나 이상의 클러스터에 저장된다. NTFS를 사용하면, 클러스터의 크기를 512 바이트에서 64 KB 사이에서 정할 수 있다. 윈도우NT는 드라이브가 지정되면 그 크기에 따라 적당한 기본 클러스터 크기를 추천한다. 예를 들면, 4 GB 짜리 드라이브에 대해서는 기본 클러스터 크기가 4 KB이다. 한번 정해진 클러스터들은 더 이상 나눌 수 없다는데 유의하라. 아무리 크기가 작은 파일이라 하더라도 한 클러스터를 차지하고, 4.1 KB 크기의 파일에 대해 4 KB 클러스터 시스템에서는 두 개의 클러스터(8 KB 필요)가 사용된다.
클러스터 크기는 디스크 공간의 효율적인 사용과, 하나의 파일을 읽어들일 때 몇 번의 디스크 액세스가 필요한지 사이에서 사용자가 선택해야할 문제이다. NTFS를 사용할 때 일반적으로, 하드디스크의 크기가 클수록 기본 클러스터 크기가 커지는데, 그 이유는 이 시스템의 사용자가 디스크 공간사용은 다소 비효율적이라도, 디스크 액세스 횟수를 줄임으로써 퍼포먼스를 높이기를 원한다고 가정하기 때문이다.
NTFS를 사용하여 파일이 만들어지면, 그 파일에 관한 레코드가 MFT라고 불리는 특별한 파일 내에 만들어진다. 그 레코드는 하나의 파일이 여기저기 흩어져있는 클러스터들에 나뉘어 저장되어 있을 때, 그 파일을 찾기 위해 사용된다. NTFS는 하나의 파일 전체를 담을 수 있을 만한 저장공간(여러 개의 클러스터들이 서로 인접해있는)을 찾으려는 시도를 한다. 각 파일은 데이터의 내용과 함께 그것의 속성에 관한 설명, 즉 메타데이터를 포함하고 있다.
마이크로소프트에서 NT에 관한 질의응답 페이지를 제공하고 있습니다.
마이크로소프트는 또한 FAT과 NTFS에 대한 기본 클러스터 크기의 비교자료를 제공합니다.
file system ; 파일 시스템
1. 컴퓨터에서, 파일 시스템은 파일에 이름을 붙이고, 저장이나 검색을 위해 논리적으로 그것들이 어디에 위치시켜야 하는지 등을 나타내는 방법이다. 도스, 윈도우, OS/2, 매킨토시 및 유닉스 기반의 운영체계들은 모두, 파일들이 어딘가에 계층적인 구조로 위치하는 파일 시스템을 가지고 있다. 파일은 계층구조 내의 바른 위치인 디렉토리 (윈도우95 이후에는 폴더) 또는 서브디렉토리 내에 놓여진다. 파일 시스템들은 파일의 이름을 붙이는 규칙을 가지고 있다. 이러한 규칙에는 파일이름의 길이제한, 어떤 글자들이 사용될 수 있는지 등이 포함되며, 몇몇 시스템에서는 파일이름 확장자의 길이조차 제한을 두고 있다. 파일 시스템은 또한 디렉토리 구조를 통하여 파일까지 가는 경로를 설정하는 형식을 포함한다.
2. 때로 이 용어는 1.번에서 정의된 파일시스템을 지원하는 운영체계 또는 부가적인 프로그램의 일부를 지칭한다. 이러한 부가 프로그램의 예로는 NFS나 AFS 등이 있다.
8. TCP/IP, UDP
9. 패킷 from(http://www.terms.co.kr/packet.htm)
데이터와 호 제어 신호가 포함된 2 진수, 즉 비트 그룹.
패킷교환 방식에서 데이터를 전송할 때에는 패킷이라는 기본 전송 단위로 데이터를 분해하여 전송한 후, 다시 원래의 데이터로 재조립하여 처리함.
전자우편이나 HTML 파일, GIF 파일, 기타 어떤 종류의 파일이라도, 이것을 인터넷을 통해 한 장소에서 다른 장소로 보내려 할때, TCP/IP의 TCP 계층은 이 파일을 전송하기에 효율적인 크기로 자르게 된다. 분할된 각 패킷들에는 각각 별도의 번호가 붙여지고 목적지의 인터넷 주소가 포함되며, 각 패킷들은 인터넷을 통해 서로 다른 경로를 통해 전송될 수 있다. 보내어진 패킷들이 모두 도착하면, TCP 계층의 수신부에서 패킷들을 원래의 파일로 다시 재조립한다. 이와 같이 패킷교환 방식은 인터넷과 같은 비연결형 네트웍에서 데이터 전송 처리를 하기 위한 효율적인 방법 중의 하나이다.
또 다른 방식의 하나인 회선교환 방식은 음성 전송을 위한 네트웍이다. 회선교환에서도 네트웍 내의 회선들을 많은 사용자들이 공유한다는 측면에서는 패킷교환 방식과 마찬가지지만, 일단 특정한 경로가 설정되면 각 연결은 일정기간 동안에는 거기에 전념하여 서비스를 한다는 측면이 다르다.
패킷이나 데이터그램은 비슷한 의미로 사용되는데, TCP와 비슷한 역할의 프로토콜인 UDP에서는 패킷이라는 용어 대신에 데이터그램이라고 부른다.
패킷은 일반적으로 128 바이트가 표준이지만 52, 64, 256 옥텟 등 편의에 따라 크기를 바꿀 수 있으며, 옥텟은 보통 8 비트로 구성되고 이를 1 문자로 간주한다. 64자를 1 세그먼트로 하고, 128자를 1 패킷으로 하는 표준 패킷에 있어 그 관계는 다음과 같다.
1 packet = 2 segment = 128 octet = 1,024 bit
10. 리눅스 Kernel 2.4과 2.6의 차이
from http://ubue.egloos.com/1244144
kernel 2.4
"기업 환경 수준" - 대부분의 데스크톱 사용자들에게는 당장 유용하지 않다.
1) 리눅스 2.4는 다중 프로세서 시스템상에서 스케일이 좀더 커지고, 설정 과정의 한계를 제공 ( 동시에 더 많은 프로세스 관리)
2) 스케줄러는 여러개의 동시 다발적인 프로세스를 효율적으로 수행하기 위해 수정
3) 42억이라는 놀랄 만한 수의 사용자들과 그룹을 관리
4) 강력한 하드웨어의 지원 ( 인텔상에서 64G RAM, 16개의 이더넷카드, 10개의 IDE 컨트롤러, 다중 IO-APICs 지원)
kernel 2.6
"임베디드 시스템을 위한 리눅스" - ucinux 프로젝트의 많은 부분을 리눅스 커널 메인 스트림으로 받아드림
"NUMA 지원" - NUMA(Non-Uniform Memory Access)를 지원 ( 대형 서버들을 지원할 수 있도록 하여 SMP를 넘어서는 단계)
1) 32bit UID의 사용 (32bit UID와 GID를 사용함에 따라 DevFS가 사양화)
2) Module-init-Tools 커널 모듈 로더 프로그램 (kernel 2.4에서 2.6으로 업그레이드할 때에는 이 프로그램을 고려해야 한다.)
3) 커널 설정 프로그램의 변화 (2.4: make xconfig를 통한 설정 프로그램은 QT 라이브러리를 요구, make gconfig는 gtk 라이브러리를 요구 하였다. 2.6: make menuconfig는 인터페이스 변경이 없다.)
4) I/O 서브 시스템 (블록과 기억 장치 관리 계층에 대한 상당한 개발)
(기본적: anitcipatory I/O scheduler 사용, 커널 명령 라인: elevator=deadline"으로 설정, deadline scheduler는 기본 스케줄러에 비해 10%의 향상된 속도를 보장)
5) 블록 장치 크기 지원 (32bit 아키텍처에서 16TB, 64bit 아키텍처에서 8EB까지 엑세스(access)가능)
6) 프로세스 스케줄러 향상 (O(1) 알고리즘을 사용하도록 프로세스 스케줄러 개선-> 대형SMP시스템과 같은 다량 프로세스들을 사용하는 경우 범위성(Scalability)를 증가, 물리적으로 CPU들에 대해서 프로세스를 분산)
7) 파일 시스템 지원 향상 (기본 파일 시스템인 ext2/3뿐 아니라 수많은 추가적인 파일 시스템들이 지원, NTFS는 쓰기와 읽기 가능)
그밖에...
짝수 : 개발자
홀수 : 상용화
http://www.ibm.com/developerworks/kr/linux/library/l-web26/index.html
11. Cache
12. Accumulator
13. Multiply
14. Buffer
15. DMA
16. 30 P 부터 읽어보기 ~63/.
17. Glibc C(나혼자 궁금..)
18. LINUX는 GPOS가 아닌가?
19. General과 상용은 어떻게 다른 것인가?
2009.6.23 계속 수정중