So sánh kernel Linux và Windows

XP linux vista

Điều gì làm nên một Microsoft Windows thống trị ở đỉnh cao hơn hai mươi năm, điều gì làm nên một Linux xuất phát muộn hơn nửa thập kỉ lại có thể vươn lên mạnh mẽ để khẳng định mình? Bỏ qua những tranh cãi triền miên về cái tốt hơn, chúng ta hãy nhìn sâu hơn một chút, về mức kernel của cả hai để tự tìm ra câu trả lời cho mình.

Loạt bài viết sẽ xem xét một số điểm tương đồng và khác biệt của hai phiên bản kernel phát hành gần như là mới nhất, Linux 2.6.22.19 (từ đây gọi tắt là Linux) và NT 6.0.6000 (từ đây gọi tắt là NT) của Windows Vista (phiên bản mới nhất của hai hệ thống trên cho đến hiện tại là Linux 2.6.24.3NT 6.0.6001 của Windows Vista SP1).

Cấu trúc kernel

Xét về mặt cấu trúc, cả Linux và NT đều là kiến trúc Monolithic kernel với những ngoại lệ, hay cũng có thể gọi là hybrid kernel, một khái niệm còn đang gây tranh cãi. Monolithic là kiến trúc kernel bao gồm những dịch vụ được hệ điều hành cung cấp, và những dịch vụ này sẽ thực thi trong vùng không gian của kernel (kernel space). Khái niệm này đối nghịch với Microkernel, là kiến trúc kernel không bao gồm những dịch vụ hệ điều hành cung cấp, mà chỉ có những cơ chế cần thiết để hiện thực những dịch vụ đó, những cơ chế như quản lý không gian địa chỉ (address-space) ở mức thấp, quản lý tiểu tiến trình (thread), hay cơ chế giao tiếp giữa các tiến trình (IPC). Những dịch vụ hệ điều hành cung cấp đề cập ở trên gồm có các trình điều khiển thiết bị (device driver), các ngăn xếp giao thức (protocol stack), hệ thống file (file system) và lớp giao diện tương tác với người dùng (user interface). Những dịch vụ này sẽ hoạt động trong vùng không gian người dùng (userspace) với kiến trúc Microkernel.

Như vậy Linux và NT đều cung cấp sẵn hầu như tất cả các dịch vụ của hệ điều hành trong kernel, nhưng có những ngoại lệ, nghĩa là
có những dịch vụ ở mức hệ điều hành sẽ được cung cấp ở bên ngoài mã nguồn của kernel, và thực thi ở không gian userspace. Cụ thể là những dịch vụ sau đây:

  • Device driver Việc thiết kế tách các chương trình điều khiển thiết bị ra khỏi phần mã nguồn của kernel đã thực hiện từ khá lâu, nhưng cho đến phiên bản 2.6.22, rồi chính thức là 2.6.23 thì Linux đã hoàn chỉnh phần API cho phép viết driver thực thi ở user space. Điển hình là driver cho các thiết bị USB và máy in, dạng userspace driver này đang trở nên rất phổ biến cho nhiều loại thiết bị. NT cũng hỗ trợ userspace driver cho USB và máy in, âm thanh, đồ hoạ.
  • File system Bản thân NT không có các loại file system ở userspace, tuy nhiên ta có thể sử dụng phần mềm tự do để thực hiện điều này. FUSE (File system in user space) là hệ thống file đầy đủ tính năng hoạt động ở user space được viết cho Linux (ngoài ra còn có LUFS), sau đó đã được chuyển thể sang các hệ điều hành khác, trong đó có Windows.
  • Cơ chế đồ hoạ trên NT (Windowing) trước đây nằm hoàn toàn ở kernelspace, nhưng từ Vista trở đi đã bắt đầu chuyển sang userspace. X11 trên Linux cũng là cơ chế đồ hoạ userspace.

Về điểm này thì lại giống với kiến trúc Microkernel nên cũng có thể gọi là hybrid.

Tài liệu tham khảo

  1. Kernel comparison: Linux (2.6.22) versus Windows (Vista)
  2. Linux and Windows kernel comparison

Đông Thao

About dongthao

The best things in life, they are free ... (Cry on my shoulder lyric)
This entry was posted in kernel. Bookmark the permalink.

Có 6 phản hồi tại So sánh kernel Linux và Windows

  1. livechung nói:

    Cơ chế đồ họa của window mà chạy ở kernel thì nguy thật. Module đồ họa mà crash một cái thì cả hđh sụp luôn.
    Vì thế mà có lẽ Linux ổn hơn window. Mình nhiều lần Xorg bị crash nhưng chỉ thoát ra chạy console vẫn ngon lành.

  2. htr3n nói:

    Trong NT 3.x thì module đồ họa (Window manager/GDI) vẫn ở user-mode, qua NT 4 thì tích hợp vào kernel mode, đến NT 5 (W2K, WXP) vẫn giữ phần grahic trong kernel mode (http://en.wikipedia.org/wiki/Image:Windows_2000_architecture.svg). Vista/NT 6 thì dùng kiến trúc video tên là Windows Display Driver Model (WDDM), được Microsoft claimed là có nhiều cải tiến so với NT 5. Theo kiến trúc WDDM, phần đồ họa vẫn không hoàn toàn ở user-mode, mà chia thành 2 phần: phần kernel mode driver (KMD) gọn nhẹ, đơn giản, chỉ có lower-level functionality (chắc M$ theo nguyên lí: làm nhiều sai nhiều, làm ít sai ít — ở XP phần đồ họa nằm phần nhiều ở kernel -> gây trục trặc nhiều, theo thống kê từ M$ là 20% lỗi BSOD từ đó mà ra), còn phần nằm ở user-mode, là Desktop Window Manager, thì chịu phần lớn trách nhiệm rendering các cửa sổ và cung cấp chức năng đồ họa. WDDM còn có cải tiến là định thời GPU (kiểu time-shared) và quản lí bộ nhớ video chặt hơn để tránh đụng độ giữa nhiều application sử dụng GPU đồng thời, và cải tiến khá hay là có thể restart graphic driver khi có lỗi xảy ra (với hệ thống <= XP thì BSOD và restart PC luôn).

    @Livechung: mình nghĩ là tại vì Windows không có cung cấp kiểu terminal như Linux, nên khi crash không thể ra console được. Thử tưởng tượng không có 6 terminal mà graphic driver không làm việc trong Xorg thì cũng tình trạng cũng không khá hơn😉. Với Vista thì nếu graphic driver không hoạt động hoặc crash thì vẫn không ảnh hưởng đến các phần khác (bàn phím, chuột, hard drive, network, …) nên vẫn tiếp tục làm ở console được với điều kiện là có console tốt. Có điều console ở Win chỉ là emulator và quá khó sử dụng vì không có nhiều ứng dụng console-based như Linux. Có bạn nào thử đi Internet ở Windows command prompt chưa nhỉ😕, trên Linux có thể đi bằng lynx ấy😉

    @Thao: nên dùng thống nhất thuật ngữ để người đọc không bị confused, ví dụ: cấu trúc vs. kiến trúc, ở section title và câu đầu của section thì Thao dùng “cấu trúc”, nhưng ở dưới lại sử dụng “kiến trúc”. Just 2-cent comment😉

    [1] WDDM. http://msdn2.microsoft.com/en-us/library/aa480220.aspx

  3. Vo_Thuong nói:

    Mọi sự so sánh đều trở nên khập khiễng. window hay linux là một đề tài tranh luận dài và rôi nổi. Linux tốt hơn window, nhưng mà để có được khách hàng như window chắc còn phảiỡ lực nhiều. sử dụng linux quá khó so với window. ….

  4. tuyetkiem nói:

    Như vậy ở mức kernel thì linux (2.6.25) hiện nay tương đương với Vista SP1 (6.0.6001).
    Nhưng em thấy các phần mềm trên linux hoạt động chậm chạp hơn trên Vista. Hệ thống dễ bị “đơ” hơn (chưa trải nghiệm những phần mềm quản lí hoặc phần mềm điều khiển doanh nghiệp nên em không rõ trên đó thì linux hoạt động ra sao).
    Windows (XP) em dùng lâu rồi. Kinh nghiệm thì cứ một khoảng thời gian lại phải làm mới cho nó (Do nhiều nguyên nhân).Linux thì chưa thấy hiện tượng đó. Nhưng quả thực linux chạy các ứng dụng chậm chạp hơn.Vậy là tại nhân linux, tại cách sử dụng nhân, tại hệ điều hành, tại thiếu driver phần cứng (Do không tận dụng hết phần cứng hoặc Driver thiếu hiệu quả chính là nguyên nhân), hay tại phần mềm viết cho linux?

  5. Hoàng Hải nói:

    Thực ra mình thấy Linux chạy các ứng dụng nhanh đấy chứ nhỉ? Dường như nó chỉ gặp vấn đề với FF mà thôi.

  6. ngoctam1307 nói:

    Cho dù là Linux hay Windows đi chăng nữa thì device driver của chúng vẫn phải chạy ở Kernel space. Và vì để cải thiện tốc độ read/write vào memory của device nên driver của chúng sẻ gồm có 2 phần:
    + Kernel space: dò tìm device trên bus, đăng ký data structure của device và driver vào Kernel, cung cấp System call cho những user space application để cấu hình, lấy thông tin của device.
    + User space: cấu hình, lấy thông tin của device và đặc biệt là map vùng memory của device vào user space address. Việc read/write vào vùng memory được map trên user space address sẽ nhanh hơn rất nhiều so với vùng memory được map trên kernel space address, vì lúc đó chúng ta sẽ không dùng thêm bất kỳ System call nào nữa.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s