zzun.net

때 아닌 DDoS 공격으로 IT 관련 뉴스가 도배되었지만 그 전까지만 해도 티맥스소프트의 윈도9이 세간의 화제였다. 티맥스가 OS를 만들고 있다는 건 익히 알고는 있었지만 이렇게 빨리 시연회를 할 정도로 완성되었을 줄은 몰랐다. OS라는게 하루 아침에 되는 게 아니라는 생각 때문인지 본인은 그리 기대도 하지 않았고 그저 신문 기사 몇 편만 읽어봤는데 '스타크래프트를 한참의 로딩 후에 돌렸다'는 부분만 보고서는 아예 관심이 없어져 버렸다. 전체 OS의 30%를 대체한다는 기사를 보면 참 웃음 밖에 나오지 않는다.

티맥스 윈도, (이상한) 스크린샷 대공개
티맥스 윈도는 짜깁기?

사실 문제의 핵심은 티맥스 윈도우의 품질이 아니다. 세계 최고의 인재들을 긁어 모아서 수 십년 간 개발한 MS의 윈도우도 엄청나게 욕먹고 있는 현실에서 획기적인 무언가를 기대한다는 것은 애초부터 무리였다. 사실 우리가 기대했던 것은 '가능성'과 '참신함'이었다고 볼 수 있다. 수 년 내로, 혹은 십수 년 내로 MS 윈도우에 버금가는 품질의 OS를 만들 수 있다는 가능성과, 기존의 OS와는 다른 참신한 무언가를 기대했던 것이다. 수 많은 개발자들이 아마 나와 비슷한 생각을 했을 것이라고 생각한다. 그렇기에 실망은 클 수 밖에 없었고 각종 블로그에는 관련 글로 도배가 되기 시작하는데...

날 웃긴 '티맥스 윈도 9'
개발자로서의 슬픈 하루....티맥스 윈도우

그러나 이러한 문제보다 더 심각한 건 티맥스 개발자들의 상황이다. 직접 그 회사에서 일해보지 않아서 모르겠지만 친구 Y군의 얘기를 들어보면 대충 짐작이 간다. 특히 최근 들어 '국산'이라는 타이틀 아래 최고 수준의 기술력이 요구되는 소프트웨어들(OS, DBMS, Office 등)을 만들고 있는 점을 봤을 때 개발자들이 얼마나 폐인처럼 코딩하고 있을지... 염려스럽다. 그리고 위에서 언급한 시연회에서 이혼한 개발자, 아파서 휴직한 개발자 등을 언급하면서 프로그램에 대한 연민(?)을 요구하는 듯한 멘트도 있었다고 한다. 아래 블로그의 글을 읽고서도 과연 그런 멘트가 가능할까?

나의 남편은 개발자

세계 유수의 업체들과 경쟁하는 국내 1위의 소프트웨어 업체. 개발자로서 살아가는 젊은이들에게 큰 메리트가 될 수 있는 간판이다. 물론 이들의 선구자적인 노력이 후세에 높이 평가될 수도 있다. 하지만 기본적으로 사람은 사람답게 살아야 하지 않은가. 비좁은 사무실에서 몇 달 몇 년을 기계처럼 살아가는 사람들에게서 과연 세계적인 기술력을 기대할 수 있을까? 세계적인 기업의 '기업문화'라고 하는 것은 적어도 한 명의 천재가 다수의 성실한 사람들을 이끌고 무대포 정신으로 돌진하는 형태는 아닐 것이라고 믿는다. NHN과 많은 비교가 된다.

ps.
하루 간격으로(미국 시간으로는 같은 날) 이런 기사가 나왔다.
구글, 크롬 기반 OS 만든다

이거 참, 씁쓸하구만...

Comment +2

  • broYobi 2009.07.11 08:57 신고

    여기서도 T사의 이야기는 종종 듣지요.

    O사의 DB를 T사꺼로 바꿀꺼냐 아니냐...

    물론 안바꾸겠지만서도.. 암튼..

    재밌네.

    그리고.. 빌라 팔란다.. ㅋㅋㅋ

교재 : Applied Operating System Concepts / Silberschatz, Galvin, Gagne / WILEY
교수 : 고건 교수님
학기 : 2003/봄

Chapter 9. Memory Management

Binding
- Compile time binding : M주소를 알아야함. absolute code generated. M주소가 바뀌면 리컴파일
- Load time binding : Loader책임하에 주소부여. relocatable code로 compile(즉, Base주소 + x 로 표기)
- Execution time binding : 수행중에도 주소 바뀜. CPU가 주소생성시 마다 binding check(Address mapping table). HW서포트 필요(MMU).

Dynamic Loading : Routine is not loaded until it is called.

Overlay : Keep in memory only those part when actually needed(같은 곳에 mapping).

Dynamic Storage-Allocation Problem
- First-fit : structure의 앞부분에 너무 작은 hole들이 많아지게 됨 -> move head-pointer
- Best-fit : must search entire list. many small holes.
- Worst-fit : must search entire list. large holes.
=> 이상 세 가지 : External fragmentation의 문제 -> Buddy system
- Buddy system : 2의 배수로만 allocate. Internal fragmentation의 문제.

Fragmentation
- External F : M는 충분하지만, contiguous하지 않음. = many small holes. -> compaction
- Internal F : 요구한것보다 좀더 많이 M를 allocate함으로써 쓰지 않는 메모리가 생김.
- Compaction : shuffle M conents - 빈공간을 모두 한데 모음. dynamic relocation일때만 가능.
                     IO를 수행중일 경우 다른 주소로 옮겨가지 못함. -> OS buffer를 통해서만 IO
                     Very expensive at peak load. 성능저하!!

Page Table
- TLB : Associative Register. Parallel Search가 요구됨 -> 비쌈. context switch때 flush!
- 하나의 정보를 여러 copy로 보관할 경우 valid/invalid bit이 항상 필요함.
- 테이블이 너무 크므로 한번에 한 페이지 크기만큼의 테이블만 로드.
- 최초엔 모든 frame이 invalid.

Inverted Page Table
- 1 entry per page가 아니라 1 entry per frame으로 구현
- frame#를 index로 하고, 각  entry에는 (PID, page#)가 존재함. 시스템 전체에 하나의 Table만 존재.
- 단점 : associative search. need to search entire table.

Shared Code
- aka. Re-entrant Code(여러 process가 enter), Non-self-modifying Code(code수정불가)
- instruction과 data를 구분하여 컴파일.
- code부분에 state를 남겨서는 안됨. 모든 state는 Base Addr. Relative하게 data부분에 표현해야함.
- 각 process는 Private code and data를 따로 갖고, Shared Code부분을 공유.

Segmentation Architecture
- Segment : a logical unit.
- Protection 용이. segment 단위로 protection bit(RWX)을 둠. -> 한 segment 안에 RWX가 섞여있을 경우엔?
- fault : 아직 M에 없거나, offset 볌위를 넘었거나 등의 다양한 경우에 발생.
- segment 크기가 크면 다시 page 단위로 나눔.
  segment offset을 page/displacement로 나누어야하고, table을 두번 access 하는 단점.

Free Storage
- 순서 : LIFO(스택, 하나의 큰 hole), FIFO(큐, 두개의 작은 hole), 무순서(무수히 많은 hole, 검색에 O(n) 시간이 요구됨)
- 크기 : fixed(internal fragmentation), variable(external fragmentation).


Chapter 10. Virtual Memory

Page Fault
- Access to invalid page - page fault trap - trap handler
- Pure paging : Never swap-in until referenced. 프로그램은 M에 page가 없는 상태로 시작(cold start).
- Locality of reference : 근거 - Paging system이 성능이 좋다!
- Effective Access Time(EAT) = (1-p) x memory access
                                          + p x (OS&HW page fault overhead + [swap out(replace)] + swap in +OS&HW restart overhead)
                                          ... p : page fault rate

Page-Replacement Algorithms
- reference string을 유지함. sequence of page name
- FIFO : Belady's Anomaly : more frames -/-> less page faults (<-> Stack Algorithm)
- LRU Approximation : Reference bit 이용. Addtional R bit(R-bit이 8bit, OS가 주기적으로 shift),
                                Second chance, Enhanced SC(dirty bit도 고려).
- Counting Alg. : LFU, MFU - reference 횟수(frequency)에 기반.

Thrashing
- swapping pages in and out 하느라 많은 CPU time을 소모함.
- page fault rate↑ : 성능↓ : OS가 멀티프로그래밍 degree를 더 올림 -> Thrashing 발생!

Working-Set Model
- WS(t) : 일정 시간동안 ref된 페이지들.
- WSS : Working Set Size : ref돤 페이지의 갯수
- D : 씨그마 of WSS,      m : 할당된 frame수
- D > m -> Thrashing! -> 그 프로세스를 Suspend
- LRU와 달리 replace/allocate를 같이 결정.

Page Management Policy
- Fetch policy : prefetch or on-demand
- Replacement policy : Recency based, Frequency based ...
- Allocation policy : Equal vs. Unequal, Fixed vs. Dynamic


Chapter 11. File-System Interface

File System = Disk (Data Structure + Operation)
- 일종의 Abstract Data Type

Acyclic-Graph Directories
- Symbolic link : pathname. 원래주인이 파일 삭제시 dangling reference?
- Hard link : metadata를 복사. consistency문제. delete를 위해 reference count 필요.

Mounting File-System
- Floppy Disk, Comact Disc 등은 어떻게 접근? -> mounting을 이용, 루트 아래 새 pathname을 부여

Allocation of File Data in Disk
- Contiguous : external fragmentation. File grow의 어려움. Fast I/O(한번에 많은량 전송), swapping용으로 사용.
- Linked : No Random Access
- FAT : pointer들을 한곳에 모아둠.


Chapter 13. Secondary-Storage

- Disk Scheduling : FCFS, SSTF, SCAN, C-SCAN


Chapter 18. Protection

Access  Matrix : domain-object 간의 권한
- Switch right : 한 도메인에서 다른 도메인으로 스위치 가능
- Copy right : Asterisk(*)로 표시, 권한을 can copy un/down. 즉 이 오브젝트에 대한 권한을 다른 도메인에게 줄 수 있다.
- Limeted Copy right : 그렇지만 Asterisk(*)까지 copy할 수는 없다.
- Transfer right : Copy up/down then, Remove my right. so, Transfer!
- Owner right : 이 오브젝트에 대한 access matrix를 수정가능. 즉 현재 column 내에서.
- Control right : 이 도메인에 대한 access matrix를 수정가능. 즉 현재 row 내에서.
- Access-control list : Each column
- Capability list : Each row


Chapter 19. Security

Threats
- program에서 : Trojan Horse(예,가짜 login code), Trap Door(은행 잔고 유출)
- system에서 : Worm(spawn mechanism), Virus(싱글유저시스템에서만)

'IT > 강의' 카테고리의 다른 글

File Processing  (0) 2003.12.04
Computer Architecture Chapter 6~8.  (0) 2003.06.11
Programming Language Chapter 6~8  (0) 2003.06.09
오토마타 Chapter 9~11  (0) 2003.06.05
운영체제 Chapter 9~11, 13, 18, 19.  (0) 2003.06.01
시스템 수준에서 행해지는 전력 소모 최적화  (0) 2003.05.09
OS

Comment +0


티스토리 툴바