Tổng quan về hệ điều hành Windows

Một phần của tài liệu Luận văn:Nghiên cứu chuyển đổi phần mềm grass từ nền unix lên windows pdf (Trang 102 - 158)

Hình 3 - 0: Sơđồ về sự phát triển của hệđiều hành windows

KHOA CNTT Ờ

ĐH KHTN

Kiến trúc Windows NT cĩ hai mức truy xuất hệ thống : User Mode và Kernel Mode

User Mode : là một tập các hệ thống con được kiểm sốt (protected subsystem) của hệđiều hành và các tiến trình ứng dụng (mỗi ứng dụng khi chạy được xem là một tiến trình). Các subsystem này cung cấp các giao tiếp với kernel của hệ thống cho các ứng dụng trên Win, trong sốđĩ subsystem quan trọng nhất là Win32 Subsystem cung cấp hầu hết các khả năng lập trình cho các ứng dụng trên nề

Windows 32 bit. Các ứng dụng lập trình trên Win thơng qua các hàm API và các hàm API đến lượt mình sẽ gọi các dịch vụ tương ứng được cung cấp từ các subsystem bên dưới.

Kernel mode : là một mức xử lý đặc biệt của hệ thống, bao gồm executive và kernel. Kernel điều khiển hệđiều hành giao tiếp với bộ vi xử lý, thực hiện các tác vụ hệ thống như : điều phối (sheduling), đồng bộ hĩa đa tiến trình,và cung cấp những dịch vụ cho phép executive cĩ thể sử dụng và cung cấp ngược lại cho các

ứng dụng.

Executive cung cấp các dịch vụ cơ bản để các subsystem được kiểm sốt cĩ thể sử

dụng như : các tác vụ xử lý file, giao tiếp I/O và các tác vụđồng bộ hĩa.

KHOA CNTT Ờ

ĐH KHTN

Hình 3 - 1 Kiến trúc của hệđiều hành Windows theo họ NT 3.1.2 Tổng quan về hệđiều hành UNIX

Năm 1969, phịng thắ nghiệm Bell phát triển hệđiều hành đa nhiệm UNIX, phiên bản cài đặt đầu tiên được viết bằng ngơn ngữ assembly. Sau đĩ, cùng với việc sáng chế ra ngơn ngữ C, BELL đã thiết kế và viết lại UNIX bằng ngơn ngữ này. UNIX từđĩ trở

thành một hệđiều hành thơng dụng do khả năng cĩ thể chạy tốt trên nhiều lọai máy từ

máy tắnh cá nhân PC đến máy tắnh cỡ lớn như mainframe. Ngày nay, cĩ rất nhiều dịng hệđiều hành được phát triển trên nền UNIX, như :

Ớ AIX của IBM

Ớ Solaris của SUN Microsystem.

Ớ HP-UX và Tru64 của Hewlett Packard

Ớ UnixWare của Caldera

Ớ Linux và FreeBSD, là hai hệđiều hành mã nguồn mở.

KHOA CNTT Ờ

ĐH KHTN

Hình 3 - 2 Các dịng hệđiều hành phát triển trên nền UNIX

Về kiến trúc, hệđiều hành UNIX cĩ thể phân thành 3 lớp chức năng : mức thấp nhất là kernel, cung cấp việc quản lý tài nguyên, các tác vụđiều phối, và vấn đề bảo mật (security). Mức kế tiếp là shell, thơng dịch các lệnh do người dùng đưa vào và khởi

động các ứng dụng. Mức cao nhất là utilities, cung cấp những ứng dụng hỗ trợ.

KHOA CNTT Ờ

ĐH KHTN

Hình 3 - 3 Kiến trúc của hệ điều hành UNIX

3.1.3 So sánh tổng quát về lập trình đa nhiệm trên hai mơi trường

Đặc điểm Windows UNIX Cơ chế chắnh, hỗ trợ mạnh Tiểu trình (thread) Tiến trình (process) Hỗ trợ tiến trình Cĩ Cĩ Hỗ trợ tiểu trình Cĩ Cĩ, nhưng cài đặt khác biệt Tiểu trình Fiber Cĩ Khơng Điểm mạnh Hỗ trợ tốt việc tạo lập tiểu trình (thread) Hỗ trợ tốt đối với việc tạo lập tiến trình (process) Trang 105

KHOA CNTT Ờ ĐH KHTN Cấu trúc phân cấp tiến trình Khơng Cĩ Kế thừa các ỘcờỢ bảo mật của tiến trình cha Cĩ Cĩ ( trừ lệnh setuid) ™Vn đề qun lý các tiến trình

Các hệđiều hành đa nhiệm như Windows và UNIX phải quản lý và điều khiển nhiều tiến trình cùng một lúc. Mỗi tiến trình cĩ dữ liệu, tài nguyên hệ thống, trạng thái Ầ của riêng nĩ. Tài nguyên bao gồm khơng gian bộ nhớảo, các tập tin và các đối tượng điều phối. Các tiểu trình là một phần của một tiến trình, mỗi tiến trình cĩ thể cĩ một hoặc nhiều hơn một tiểu trình chạy bên trong nĩ. Giống tiến trình, một tiểu trình cũng cĩ tài nguyên và trạng thái của riêng nĩ. Hệđiều hành Windows và UNIX đều hỗ trợ tiến trình và tiểu trình nhưng cĩ cách quản lý khác nhau.

™ Vn đềđa nhim

UNIX được thiết kế với chiến thuật điều phối độc quyền truy xuất (preemptive multitasking) thắch hợp cho người dùng tạo ra nhiều tiến trình chạy đồng thời tại một thời điểm. Do đĩ, lập trình viên trên UNIX thường tạo ra một tiến trình mới mỗi khi cần tạo các xử lý đồng thời trong ứng dụng.

Việc tạo lập một tiến trình mới trên Windows, ngược với UNIX, tiêu tốn rất nhiều tài nguyên và bản thân chiến thuật điều phối của Windows khơng thắch hợp nên lập trình viên trên Windows thường tạo lập các tiểu trình (thread) mỗi khi cần xử lý đồng thời. Windows cũng cĩ một lọai thread đặc biệt là Fiber mà UNIX khơng cĩ, đây được gọi

KHOA CNTT Ờ

ĐH KHTN

là thread ỘnhẹỢ (lightweight thread) , thắch hợp cho các ứng dụng phải phục vụ một số

lớn người dùng như hệ thống cơ sở dữ liệu ..

Đây là khác biệt quan trọng giữa Windows và các hệđiều hành phát triển trên nền UNIX.

™ Cu trúc phân cp ca tiến trình

Khi một ứng dụng UNIX tạo lập một tiến trình (process), tiến trình mới trở thành tiến trình con của tiến trình tạo lập. Cấu trúc phân cấp này thường quan trọng và hệ thống sẽ cĩ những chỉ thị lệnh để quản lý các tiến trình con này.

Tiến trình trong Windows khơng hồn tồn sử dụng cấu trúc phân cấp như UNIX. Khi tạo lập tiến trình, ta nhận được handle và cả ID của tiến trình, việc tạo lập cấu trúc phân cấp như UNIX là tùy chọn đối với ứng dụng nếu nĩ thật sự cần.

™ Vn đề signals, exceptions, và events

UNIX và Windows đều cĩ cơ chế giúp tiến trình xử lý một sự kiện hay một lỗi xảy ra. Trong UNIX cơ chế này gọi là signal, trong Windows thì cĩ cơ chế exception trong đĩ Windows sử dụng Cấu trúc Xử lý ngoại lệ (Structured Exception Handling Ờ SEH) để

xử lý.

™ Vn đề b lc (filter) và ng dn (pipes)

UNIX giới thiệu một kiến trúc khác biệt trong lập trình là : bộ lọc và ống dẫn. Một chương trình trong UNIX cĩ thể xem như một Ộbộ lọc nướcỢ, nĩ nhận dữ liệu vào từ

một Ộdịng nhập liệu chuẩnỢ (input stream) và sau khi xử lý nĩ sẽ cho dữ liệu ỘchảyỢ ra một Ộdịng kết quả chuẩnỢ (output stream). Ống dẫn cho phép ta nối các bộ lọc nước

KHOA CNTT Ờ

ĐH KHTN

này lại với nhau, nghĩa là Ộdịng kết quảỢ của bộ lọc này lại tiếp tục được ỘlọcỢ qua một bộ lọc nước khác trước khi ra ngồi, hay sẽ cĩ nhiều Ộbộ lọcỢ nối tiếp nhau trong việc xử lý dữ liệu đầu vào.. Đây là điểm đặc biệt của UNIX mà Windows khơng cĩ.

™Tiến trình Daemons và Windows Services

Trong UNIX, một tiến trình deamon là tiến trình được hệ thống khởi động để cung cấp một dịch vụ nào đĩ cho những ứng dụng khác. Thơng thường, tiến trình deamon khơng giao tiếp với người sử dụng. UNIX sẽ khởi động tiến trình deamon lúc boot máy trong

đoạn script khởi tạo.

Khái niệm tiến trình deamon trong UNIX tương đương với khái niệm Windows

Services trong Windows. Các services hồn tồn giống deamon về vai trị nhiệm vụ và cũng được khởi động ở giai đoạn boot máy, các service được điều khiển thơng qua Bộ điều khiển Service ( Service Control Manager Ờ SCM), ta phải giao tiếp khi lập trình với SCM để quyết định việc khởi tạo, dừng và cài đặt cho Service.

™ Vn đề giao tiếp gia các tiến trình

Các hệđiều hành đa nhiệm phải cung cấp cơ chế cho phép các ứng dụng (tiến trình) giao tiếp và chia sẻ dữ liệu với nhau. Cơ chế này gọi là giao tiếp liên tiến trình (Interprocess Communication Ờ IPC)

Đối vi UNIX : Bộ nhớ được chia sẻ, pipe, và hàng đợi message (message queue)

Đối vi Windows : bên cạnh Bộ nhớ được chia sẻ, pipe, và hàng đợi message (message queue) nĩ cịn cĩ thêm clipboard, COM, DDE, và cơ chế send message.

KHOA CNTT Ờ

ĐH KHTN

™Đồng b hố

Cả UNIX và Windows đều cĩ cơ chếđồng bộ hố thơng qua semaphores, mutex và miền găng (critical section).

Semaphore để kiểm sốt sự truy cập vào tài nguyên địi hỏi phải giới hạn số lượng user truy cập xác định.

Mutex dùng để tạo cơ chếđộc quyền truy xuất, chỉ cho một user được sử dụng tài nguyên tại một thời điểm.

Miền găng là một phiên bản thu nhỏ của mutex, chỉ thực hiện điều phối trong phạm vi một tiến trình, giữa các tiểu trình (thread) tranh chấp tài nguyên của tiến trình với nhau. Tại một thời điểm, chỉ cho một tiểu trình sử dụng tài nguyên của tiến trình.

3.1.4 So sánh về hệ thống file của hai mơi trường

Đặc điểm Windows UNIX

Cấu trúc tổng quát Phân cấp và đa cây Phân cấp và đơn cây

Cĩ phân biệt ổđĩa và thư mục Cĩ (C,D) Khơng, mọi thứđược mount vào cây quản lý.

Ký tự phân cách đường dẫn \ /

Phân biệt chữ hoa và chữ thường Khơng Cĩ

Hệ thống file mạng SMB NFS

KHOA CNTT Ờ

ĐH KHTN

Tập tin thiết bị Khơng Cĩ

Thiết lập ID của User quản lý cho tập tin/ thư mục

Khơng Cĩ

Security ACLs Simple bit permissions

™ Tp tin thiết b (device file) : trong UNIX, thiết bị phần cứng được đại diện bằng những tập tin, thường chứa trong thư mục /dev. Nhờđặc điểm này, ta cĩ thể chạy một chương trình nhưng hơng thèm nhận kết quả trả về của nĩ bằng cách chuyển hướng kết quả (redirect - tức dùng ký tự Ổ>Ỗ hoặc Ổ<Ỗ ) kết xuất của chương trình ra null device, /dev/null. Dùng kỹ thuật tương tự, ta cĩ thể gửi dữ liệu trực tiếp ra cổng song song (serial port) ..

™ H thng file mng (Network File System)

Đối với UNIX, đĩ là Network File System Ờ NFS, phát triển bởi Sun

Microsystems.Tĩm gọn cơ chế như sau : NFS server sẽ cung cấp một thư mục cho phép chia sẻ, và NFS client cĩ quyền mount thư mục đĩ vào cây thư mục của mình. Trên nền MS-DOS, việc chia sẻ tài nguyên được thực hiện thơng qua NetBIOS (Network Basic Input Output System), tựđộng chuyển đến thư mục/tập tin trên máy tắnh khác khi yêu cầu I/O đến những thư mục/ tập tin này được chấp thuận. NetBIOS sử dụng giao thức Server Message Block (SMB), ngày nay giao thức này được phát triển thêm để cĩ thểứng dụng trên Internet và được gọi tên mới là Common Internet File System (CIFS).

KHOA CNTT Ờ

ĐH KHTN

™ Mơ hình bo mt ca UNIX

UNIX gán quyền hạn truy cập của user trực tiếp lên file. Mơ hình này làm việc tốt vì UNIX sử dụng file để đại diện cho thiết bị, bộ nhớ và ngay cả tiến trình. User cĩ thể là người dùng đã đang nhập thành cơng vào hệ thống hoặc cĩ thể là một service của hệ

thống. Mỗi USER thuộc về một GROUP và cĩ một UID (User ID). Mỗi GROUP cĩ nhiều USER và cĩ một GID (Group ID). Mỗi tiến trình đều thuộc về một UID và một GID xác định.

™ Mơ hình bo mt ca Windows

Trong mơ hình trên

user : Người dùng đăng nhập thành cơng vào hệ thống.

objects : là những tài nguyên yêu cầu bảo mật của hệ thống. Vắ dụ như tập tin, các

đối tượng đồng bộ hố, các đối tượng kernel ...

Access Token : là một cấu trúc dữ liệu đi kèm với mỗi tiến trình , xác định người dùng khởi động tiến trình này là ai, thuộc nhĩm security nào. Mỗi Access Token

được định danh trong hệ thống thơng qua một SID (Security Identifiers)

KHOA CNTT Ờ

ĐH KHTN

Security Descriptor : thơng tin mơ tả thuộc tắnh bảo mật của mỗi tài nguyên. Thơng tin này bao gồm người chủ (owner) của object này là ai, và một danh sách các quyền hạn cho phép truy cập DACL (Discretionary Access Control List ). Danh sách này cĩ thể bao gồm nhiều quyền, mỗi quyền được được gọi là một đơn vị quyền hạn truy cập ACE ( Access Control Entry), trong ACE sẽ chứa danh sách các SID được phép đối với quyền này.

Mơ tả :

Khi một tiến trình truy xuất vào một tài nguyên cĩ yêu cầu bảo mật, hệ thống sẽ

kiểm tra trong danh sách DACL của tài nguyên đĩ, cụ thể là ở mỗi ACE xem cĩ SID của tiến trình này cĩ được phép khơng. Kết thúc quá trình này, hệ thống sẽ xác định

được những quyền hạn mà tiến trình được phép thực hiện đối với tài nguyên này và dựa vào đĩ quyết định từ chối hay chấp nhận yêu cầu của tiến trình.

3.1.5 Giao diện người dùng

UNIX dựa trên giao tiếp lệnh là chắnh, người dùng gõ lệnh trực tiếp trong khi đĩ Windows sử dụng hồn tồn giao tiếp đồ hoạ (dù rằng vẫn hỗ trợ giao tiếp lệnh một cách hạn chế). Lý do là khi UNIX được xây dựng, khả năng đồ hoạ của máy tắnh cịn rất hạn chế, đến giai đoạn Windows ra đời thì điều này đã được cải thiện.

Để cung cấp khả năng giao tiếp thơng qua giao diện đồ hoạ tương tự Window cho UNIX, một hệ thống hỗ trợ được gọi là XWindows, được phát triển bởi đại học MIT.

KHOA CNTT Ờ

ĐH KHTN

3.1.6 Shell và script

Shell là một cơng cụ thơng dịch các lệnh được nhập vào bởi người dùng và sau đĩ ỘchạyỢ và thể hiện kết quả của các lệnh đĩ. Ngồi việc chạy các chương trình ra, shell cịn hỗ trợ thêm các đặc điểm cao cấp khác như cho phép gọi lại những lệnh đã được thực hiện gần đĩ, và cung cấp một ngơn ngữ lập trình dạng script để cĩ thể viết những chương trình đơn giản.

Trên nền Windows, lệnh cmd.exe sẽ mở shell của Windows cho phép chạy các

command. Trên nền Windows, các script cĩ thể kểđến là VBScript, JScript chạy được nhờ Windows Script Host (WSH).

Trên nền UNIX : cĩ nhiều kiểu shell

Ớ Bourne Shell (sh) là shell đơn giản nhất và là shell mặc định, cĩ thể gọi một chương trình, tạo pipe nhưng khơng cĩ bộ nhớ lệnh.

Ớ C Shell (Csh) : cĩ bộ nhớ lệnh và ngơn ngữ script tương tự như ngơn ngữ lập trình C

Ớ Korn Shell (Ksh) : cĩ bộ nhớ lệnh và khả năng xây dựng script. Được phát triển lên từ Bourne Shell.

UNIX giao tiếp với người dùng phần lớn thơng qua gõ lệnh trực tiếp, nên các shell đĩng vai trị quan trọng. Bên cạnh các shell, một loại ngơn ngữ lập trình đơn giản khác cũng được hỗ

trợ là script : Python, Perl, TCL/TK ..

3.2 Sơ lược v phn mm GRASS

Phiên bản GRASS mới nhất (tắnh đến thời điểm 8/7/2004) là version 5.7

Phiên bản GRASS mà chúng em đang chuyển đổi vào thời điểm nhận luận văn là 5.0.2

KHOA CNTT Ờ

ĐH KHTN

Source Grass5 (phiên bản các loại) cĩ thể download tại http://grass.itc.it/download.html Source được nén theo kiểu .tar, cĩ tên như sau: grass5.0.2_src.tar

Chú ý:

Source Grass cĩ 2 phiên bản, phiên bản chạy trên Linux và phiên bản chạy trên CygWin (là một trình giả lập mơi trường Linux chạy trên Windows)

3.3 Sơ lược v mã ngun ca GRASS 5.0.2

Kắch thước tổng cộng của Source Grass trên xấp xỉ gần 100 MB, số lượng file tổng cộng là

19777 files, nằm trong 2860 folder.

Trong đĩ, thư mục SRC là thư mục phát triển chắnh yếu, thư mục này chứa tồn bộ source code cần thiết tối thiểu nhất để chạy chương trình. Các thư mục cịn lại chỉ là các package kèm theo, các tools, các tài liệu, cùng với các source phát triển khác cịn dang dở như:

src.contrib, src.garden, src.todo v.vẦ

Source Grass được viết bằng ngơn ngữ C trên Linux (tạm gọi là C-Linux), là ngơn ngữ

giống với ANSI C trên Window, nhưng cĩ sử dụng nhiều thư viện hệ thống khác mà trên Window khơng cĩ, vắ dụ như thư viện #include <unistd.h>, <sys/time.h>, <sys/wait.h>, <pwd.h>, <zlib.h>, <rpc/Ầ> v.vẦ

Bên cạnh đĩ, hệ thống xử lý đồ họa trong Linux cũng hồn tồn khác với MS Window, C- Linux sử dụng hệ thống đồ họa là các hàm X, để tương tác với hệ thống giao diện đồ họa

XWindow của Linux.

(Ghi chú thêm: Bộ thư viện lập trình đồ họa trên Linux (giống như bộ thư viện GDI của Windows) bao gồm 3 thư viện là: XLIB, XTOOLKIT, và MOTIF, trong đĩ GRASS sử dụng bộ thư viện cơ bản nhất là XLIB, sẽđược xem xét kỹ hơn vào phần sau )

KHOA CNTT Ờ

ĐH KHTN

Ngồi source code C/Linux ra, source Grass cịn được viết bằng các tập tin Shell Script

Một phần của tài liệu Luận văn:Nghiên cứu chuyển đổi phần mềm grass từ nền unix lên windows pdf (Trang 102 - 158)