Chap.1. Windows NT 와 Windows 9532- bit O/Sbusiness 와 technical factor의 조화1 ┏ MS의 O/S family 소개┗ Win32 API 소개2 Win32 와 UNIX간의 비교1. 개관* MS 의 32-bit O/S.객체 지향 사용자 인터페이스.network과 C/S computing, Internet access를 위한 S/W를 system에 통합 제공.system 관리 같은 utility들을 제공→ full featured real O/S cf. UNIX, IBM MVS, VMS, OS/22. O/S의 정수Win32 : O/S의 기능을 laptop PC에서 enterprise server까지 확장(→Win32 API로 구현)주요 주제 (O/S의 기능).Memory : 크고 단순한 가상 메모리 공간을 관리.File System명명된 file 공간 관리.directory와 file 관리뿐만 아니라 직접적이면서 순차적인 접근 제공.계층적인 name 공간제공.Resource Naming and Location.file naming일반적인 object에 대한 name(예, device, ipc object)name object에 대한 접근 관리, 위치 지정..Multitaskingprocess들, thread들, 기타 비동기 실행이 가능한 독립된 단위들의 관리.task들은 선점될 수 있으며, 동적인 우선 순위로 schedule가능..통신과 동기화task 대 task의 통신과 동기화를 network 또는 같은 system 내에서 가능..security와 protection비자격자나 사고 등으로부터 보호하는 장치.* Win32 APInormal O/S 의 요구조건을 충족.3. PC 또는 그 이상을 위한 완전한 O/S* Win95, NT의 장점.Windows가 desktop 시장을 장악..저렴한 응용 S/W 개발 도구가 풍부..사용자들에 친숙한 GUI 환경 제공..NT의 portabilityX-86, Pentium, Pymmetric multiprocessor system) 지원.server, w/s 까지 지원..NT의 certificationby NSA (National Security Agency)의 C2 sequrity level..대부분의 O/S는 전용 architecture.Win32의 Source code의 portabilityIntel, Alpha, 기타 Win32 지원 system..표준 UNIX에 없는 다수의 특징들예) threads, C2-level security⇒1) UNIX, multiuser, mainframe에서만 가능했던 응용들을 사용자에익숙한 형태로 저렴한 PC에서 제공2) desktop에서 enterprise까지 적용 可* O/S로서의 Win3.1multitasking 결여, memory 관리 난해, file naming의 제약, security결여.4. Win32와 Windows NT, 95* Windows NT 와 95의 차이..Win95는 security feature가 부재.Win95는 Intel만 지원, SMP 지원 못함..Win95는 Unicode 지원 못함..Win32 API 구현과 구조 차이 → 성능 차이..Win95에 많은 제약(자원 관리) 예) file open, concurrent process..Win95 async. I/O를 serial device에만 지원 (dise-based file, X).Win95 Win32 function 중 다수는 제약 (지원 안됨), void 로 구현┏ Win95 : low-end desktop client platform┗ Win NT : high-end client-server platform.각종 subsystem을 지원5. 표준과 개방형 시스템 : Win32단일 회사에 의한 system ( ↔ UNIX) : 중재자 = 구현자장점.신속한 시장 대응.프로그래머를 좌절시킬 정도의 전용 구현, 확장 배제..응용 개발자가 부가 가치 창출.기반 H/W platform이 개방적표준.ANSI st-level DBMS와의 통신 protocol 제공.RPC, remote GUI 지원.Internet 지원 (TCP/IP)6. Libraries의 호환성Win32 compatibility libraryPOSIX compatibility libraryChap. 2. Win32의 시작┏ Conventions┃ Programming styles ⇒ Win32 Programming┗ Techniques1. Win32 Principles1) Win32의 주요 특징.. kernel object: 거의 모든 자원, handle로 참조되고 인지한다.. kernel object는 Win32 API로만 처리 가능: OOP의 Data abstraction 원칙과 일치(Win32는 OO가 아님). object: ipc, 메모리 매핑, events등을 위한 file, 프로세스, 스레드, 파이프 등.: security 속성을 지님.. 풍부하며 유연한 interface1 같은 또는 유사한 기능을 하는 다수의 함수2 많은 매개변수와 flag로 된 함수. (대부분 무시 가능). 다양한 동기화 와 통신 매커니즘.. 스레드 : 실행의 기본 단위, 프로세스는 하나 또는 그 이상의 스레드를 포함.. Long and descriptive names (Type name conventions).predefined data types : uppercase┏ BOOL┃ HANDLE┃ DWORD┃ LPTSTR┗ LPSECURITY_ATTRIBUTES.predefined data type 에는 * 을 배제┏ LPTSTRTCHAR *┗ LPCTSTRconst TCHAR *.변수 명, 함수의 프로토타입 → Hungarian notationlpsz file name : Long pointer to zero-terminated string.참고. MSDEVINCLUDEWINDOWS.HWINNT.HWINBASE.H* Win32의 Win16 API. type의 무분별함.LPTSTR, LPVOID. 사용 경우 nix에서는 순서로 의미있는 0,1,2, ... file descriptor 가 의미.Win32는 HANDLE로 모든 것을 동일 처리.Unix는 short, lowercase, parameterWin32 process는 parent-child 또는 comparable 프로세스 group이 없음.Text file의 end-of-line (CR-LF vs LF in Unix)2. Standard C Library : 사용 시기.C Library (ANSI Standard)Win32 없이 많은 것이 가능. 특히 file I/O꼭 있어야 할 것: , , , formatted I/O함수등.(System call 과 먼 것)사용시기는 정답 없음. 익숙해지면 Win32가 편리.C Library는 시스템 자원 사용에 제약. simple program에 적절.예. 6장의 memory-mapped files.성능, 편의 등에 유리, 그러나 C Library에서는 제공 안됨.3. 예 : Simple Sequential File Copy.내용 : 1. Unix system call을 이용한 경우2. 표준 C Library를 이용3. Win32를 이용4. 하나의 Win32 Convenience function를 이용 (CopyFile)목적 : 프로그래밍 모델 비교.성능 및 한계 비교.* Sequential file processing: file system의 가장 일반적이고 단순한 주요 기능. 예 compiling, text processing* File Copying단순하지만 호율적인 구현은 어려움.예: overlapped I/O, memory mapping, 스레드, 기타 기술.1) File Copy in Unix (Unix system call). file "object"가 intergers (file desciptors)-1 : error value, file open 이 실패.. read/write의 return value : 처리된 바이트의 수.(argument가 아ive return : 성공┗ 0 return : file의 끝.. close 는 I/O object에만 적용. (프로세스에는 적용 안됨). I/O는 동기적. → 비효율적.. error 처리 : perror 함수, C library로 전역 변수 errno에 의존errno는 Unix call에서 발생.. C Library printf I/O 함수 : 유용.2) Standard C Library (Stream File I/O object, Win32 object에 유사)Unix와 3가지 주요 차이.1. interger file descriptor ↔ pointer to File structureinvalid value : NULLpointer : handle 형태.2. text와 binary file을 구분.text file은 system-specific character sequences를 포함.I/O operation 이 구분, 번역. (예 eof)3. error : perror 로 처리.* 장점. UNIX, Win32 에의 portability. 성능 증가.* 단점.여전히 동기식 I/O.random access 가능(fseek, Unix도 가능) → 한계(복잡)..file security 제어 불능.3) Win321. : Win32의 함수 definition과 data types.2. 모든 Win32의 objects는 HANDLE type 변수로 인지.CloseHandle 함수 : 대부분의 object에 적용.3. 다양한 symbolic constants와 flag.길고 사용 목적을 나타내는 이름.예) INVALID_HANDLE_VALUE4. 함수의 return 값 : BooleanLoop logic에 영향 (eof 시 zero byte read 와 failure를 구분)5. System error code : GetLastError(), 어느 곳에서나 가능.6. Unix : permission 으로 file access를 제어WinNT: powerful m.