Thứ Hai, 8 tháng 11, 2010

Giành quyền truy cập Administrator không cần mật khẩu

QuanTriMang.com - Có rất nhiều cách giúp người dùng có thể lấy lại quyền truy cập từ tài khoản người quản trị đã bị mật khẩu bảo vệ. Bài báo sau sẽ cung cấp cho bạn 2 cách tiện nhất để có thể lấy lại tài khoản của mình mà không cần mật khẩu.
Cách thứ nhất rất nhanh chóng và dễ dàng nhưng bạn chỉ có thể áp dụng với hệ điều hành Windows XP. Nếu người dùng sử dụng hệ điều hành Windows 7 hoặc Vista, hãy bỏ qua 3 đoạn văn bản dưới đây.
Windows XP có một lối cửa sau dành cho kiểm soát người quản lý. Cách dưới đây chỉ có thể áp dụng nếu người dùng không biết cách đóng cửa sau này.

Đầu tiên, khởi động ở chế độ Safe Mode: khởi động máy tính rồi nhấn F8 trước khi logo của Windows xuất hiện. Từ menu Boot, chọn Safe Mode. Khi màn hình đăng nhập xuất hiện, nó chỉ xuất hiện tên một người dùng bạn chưa từng thấy trước đó, Administrator, mà không có mật khẩu nào. Do vậy, bạn có thể đăng nhập vào Windows theo quyền của người quản trị.
Sau khi đã vào trong Windows, bạn có thể sử dụng Control Panel của tài khoản người dùng để thay đổi mật khẩu trên tài khoản người quản trị hoặc tạo một mật khẩu mới cho riêng mình. Ngoài ra, bạn cũng có thể muốn thêm mật khẩu cho tài khoản Administrator để có thể đóng cửa sau.
Nếu bạn đang sử dụng hệ điều hành Windows 7 hoặc Vista, hoặc nếu ai đó đã đóng cửa sau, bạn có thể loại bỏ mật khẩu người quản trị bằng cách sử dụng Ubuntu Linux. Điều này có một chút phức tạp, vậy nên bạn cần phải thực hiện cẩn thận, chính xác.
Nếu chưa có đĩa cài đặt Ubuntu Linux, bạn có thể download trên trang chủ của hãng. Kích đúp vào file .iso vừa mới download về. Windows có thể khởi động một chương trình giúp ghi đĩa Ubuntu để bạn sử dụng. Nếu không có, hãy download và cài đặt ISO Recorder, và thử lại. Chỉ đơn giản là copy file .iso vào đĩa CD không hoạt động.
Sau khi đã ghi xong đĩa, khởi động lại máy. Khi được hỏi, kích vào nút Try Ubuntu.
Tiếp đến, bạn sẽ phải cài đặt phần mềm: Từ menu ở góc trên cùng bên phải của màn hình, chọn System, Administration, Software Sources.
Ở màn hình tiếp, kích vào 2 lựa chọn vẫn chưa được tích: Community-maintained Open Source software (universe)Softrware restricted by copyright or legal issues (multiverse). Tiếp đến, kích vào Close rồi Reload.
Sau khi chương trình xử lý xong, chọn System, Administration rồi nhấn Synaptic Package Manager ở menu trên cùng bên phải.
Tại cửa sổ Search, điền chntpw. Sẽ có chương trình với tên gọi như trên xuất hiện trong danh sách các gói bên dưới. Kích vào đó rồi chọn Mark for installation. Tiếp đến, kích vào icon Apply trên thanh công cụ. Kích vào Apply rồi chờ cho tới khi quá trình cài đặt hoàn thành.
Tiếp đến, bạn sẽ phải mount ổ đĩa của mình: ở menu trên cùng, chọn Places > ổ cứng bên trong hoặc phân vùng Windows. Sau khi đã mount thành công, sẽ có cửa sổ File Browser xuất hiện (trông giống Windows Explorer).
Bằng các kích đúp vào icon folder, vào folder Windows\system32\config của ổ đĩa Windows.
Giờ đây, bạn đã có thể loại bỏ mật khẩu.
Từ menu ở trên cùng, chọn Applications > Accessories >Terminal. Tiếp đến, sẽ có một cửa sổ màu đen trông giống với cửa sổ lệnh của Windows.

Sắp xếp 2 cửa sổ này để bạn có thể xem được mục top của cửa sổ File Browser đằng sau cửa sổ Terminal.
Tại cửa sổ lệnh Terminal, gõ cd /media/ (nhớ cách sau cd) và đường dẫn tới folder Config của bạn, sử dụng tên folder ở trên cùng như một hướng dẫn. Chúng tôi rất muốn có thể nói đơn giản với bạn rằng đường dẫn là: "cd /media/windows/system32/config" nhưng không giống với lệnh của Windows, Terminal của Ubuntu rất nhạy loại chữ. Dựa vào phiên bản Windows bạn đang muốn “thuần hóa”, đường dẫn có thể là windows/system32 hoặc Windows/System32, và Ubuntu sẽ không hiểu được nếu bạn điền sai.
Sau khi đã điền đúng, nhấn ENTER.
Tiếp đến, điền sudo chntpw -u logon SAM. Logon sẽ là tên đăng nhập của tài khoản người quản trị. Ví dụ, nếu bạn đang cố gắng tiếp quản tài khoản tên Quantrimang, thì bạn sẽ phải điền sudo chntpw -u Quantrimang SAM. Nhớ rằng, tất cả những gì được điền đều rất nhạy loại chữ, bao gồm cả tên đăng nhập.
Sau khi nhấn ENTER, có rất nhiều dòng chữ sẽ kéo xuống rất nhanh. Nếu bạn điền đoạn chữ trên chính xác, mục cuối cùng sẽ là ". . . . User Edit Menu:"
Tiếp đến, nhấn 1 rồi nhấn ENTER.
Ở mục truy vấn kết quả, nhấn Y.
Khi chương trình xử lý thành công, kích vào logo nút tắt nguồn ở góc bên phải và khởi động lại vào Windows. Khi khởi động vào Windows, tài khoản sẽ không còn yêu cầu bạn nhập mật khẩu người dùng nữa.
Lamle (Theo PCWorld.com)

Chủ Nhật, 7 tháng 11, 2010

Connection strings for SQL Server 2005

.NET Framework Data Provider for SQL Server

Type:    .NET Framework Class Library
Usage:  System.Data.SqlClient.SqlConnection
Manufacturer:  Microsoft
More info about this class library »
Standard Security
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
Use serverName\instanceName as Data Source to connect to a specific SQL Server instance.

Are you using SQL Server 2005 Express? Don't miss the server name syntax Servername\SQLEXPRESS where you substitute Servername with the name of the computer where the SQL Server 2005 Express installation resides.
Standard Security alternative syntax
This connection string produce the same result as the previous one. The reason to include it is to point out that some connection string keywords have many equivalents.
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;
Trusted Connection
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
Trusted Connection alternative syntax
This connection string produce the same result as the previous one. The reason to include it is to point out that some connection string keywords have many equivalents.
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
Connecting to an SQL Server instance
The syntax of specifying the server instance in the value of the server key is the same for all connection strings for SQL Server.
Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=True;
Trusted Connection from a CE device
Often a Windows CE device is not authenticated and logged in to a domain. To use SSPI or trusted connection / authentication from a CE device, use this connection string.
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain\myUsername;Password=myPassword;
Note that this will only work on a CE device.
Connect via an IP address 
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword; 
DBMSSOCN=TCP/IP. This is how to use TCP/IP instead of Named Pipes. At the end of the Data Source is the port to use. 1433 is the default port for SQL Server. 
Enabling MARS (multiple active result sets) 
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True; MultipleActiveResultSets=true; 
Use ADO.NET 2.0 for MARS functionality. MARS is not supported in ADO.NET 1.0 nor ADO.NET 1.1. 
Attach a database file on connect to a local SQL Server Express instance 
Server=.\SQLExpress;AttachDbFilename=c:\mydbfile.mdf;Database=dbname; Trusted_Connection=Yes; 
Why is the Database parameter needed? If the named database have already been attached, SQL Server does not reattach it. It uses the attached database as the default for the connection.
Attach a database file, located in the data directory, on connect to a local SQL Server Express instance 
Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
Why is the Database parameter needed? If the named database have already been attached, SQL Server does not reattach it. It uses the attached database as the default for the connection.

Using an User Instance on a local SQL Server Express instance
The User Instance functionality creates a new SQL Server instance on the fly during connect. This works only on a local SQL Server 2005 instance and only when connecting using windows authentication over local named pipes. The purpose is to be able to create a full rights SQL Server instance to a user with limited administrative rights on the computer.
Data Source=.\SQLExpress;Integrated Security=true; AttachDbFilename=|DataDirectory|\mydb.mdf;User Instance=true;
To use the User Instance functionality you need to enable it on the SQL Server. This is done by executing the following command: sp_configure 'user instances enabled', '1'. To disable the functionality execute sp_configure 'user instances enabled', '0'.
Database mirroring
If you connect with ADO.NET or the SQL Native Client to a database that is being mirrored, your application can take advantage of the drivers ability to automatically redirect connections when a database mirroring failover occurs. You must specify the initial principal server and database in the connection string and the failover partner server.
Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;Initial Catalog=myDataBase;Integrated Security=True;
There is ofcourse many other ways to write the connection string using database mirroring, this is just one example pointing out the failover functionality. You can combine this with the other connection strings options available.
Asynchronous processing
A connection to SQL Server 2005 that allows for the issuing of async requests through ADO.NET objects.
Server=myServerAddress;Database=myDataBase;Integrated Security=True;Asynchronous Processing=True;

SQL Native Client 9.0 OLE DB provider

Type:    OLE DB Provider
Usage:  Provider=SQLNCLI
Manufacturer:  Microsoft
More info about this provider »
Standard security
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Uid=myUsername; Pwd=myPassword;
Are you using SQL Server 2005 Express? Don't miss the server name syntax Servername\SQLEXPRESS where you substitute Servername with the name of the computer where the SQL Server 2005 Express installation resides.
Trusted connection
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
Equivalent key-value pair: "Integrated Security=SSPI" equals "Trusted_Connection=yes"
Connecting to an SQL Server instance
The syntax of specifying the server instance in the value of the server key is the same for all connection strings for SQL Server.
Provider=SQLNCLI;Server=myServerName\theInstanceName;Database=myDataBase; Trusted_Connection=yes;
Prompt for username and password
This one is a bit tricky. First you need to set the connection object's Prompt property to adPromptAlways. Then use the connection string to connect to the database.
oConn.Properties("Prompt") = adPromptAlways
oConn.Open "Provider=SQLNCLI;Server=myServerAddress;DataBase=myDataBase;
Enabling MARS (multiple active result sets)
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;MARS Connection=True;
Use ADO.NET 2.0 for MARS functionality. MARS is not supported in ADO.NET 1.0 nor ADO.NET 1.1.
Encrypt data sent over network
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;Encrypt=yes;
Attach a database file on connect to a local SQL Server Express instance
Provider=SQLNCLI;Server=.\SQLExpress;AttachDbFilename=c:\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
Why is the Database parameter needed? If the named database have already been attached, SQL Server does not reattach it. It uses the attached database as the default for the connection.
Attach a database file, located in the data directory, on connect to a local SQL Server Express instance
Provider=SQLNCLI;Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
Why is the Database parameter needed? If the named database have already been attached, SQL Server does not reattach it. It uses the attached database as the default for the connection.
Database mirroring
If you connect with ADO.NET or the SQL Native Client to a database that is being mirrored, your application can take advantage of the drivers ability to automatically redirect connections when a database mirroring failover occurs. You must specify the initial principal server and database in the connection string and the failover partner server.
Provider=SQLNCLI;Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;Initial Catalog=myDataBase;Integrated Security=True;
There is ofcourse many other ways to write the connection string using database mirroring, this is just one example pointing out the failover functionality. You can combine this with the other connection strings options available.

.NET Framework Data Provider for OLE DB

Type:    .NET Framework Wrapper Class Library
Usage:  System.Data.OleDb.OleDbConnection
Bridging to SQL Native Client OLE DB
This is just one connection string sample for the wrapping OleDbConnection class that calls the underlying OLEDB provider. See respective OLE DB provider for more connection strings to use with this class.
Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Uid=myUsername; Pwd=myPassword;

SQL Server Native Client 10.0 OLE DB Provider

Type:    OLE DB Provider
Usage:  Provider=SQLNCLI10
Manufacturer:  Microsoft
More info about this provider »
Standard security
Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Uid=myUsername; Pwd=myPassword;
Are you using SQL Server 2005 Express? Don't miss the server name syntax Servername\SQLEXPRESS where you substitute Servername with the name of the computer where the SQL Server 2005 Express installation resides.
Trusted connection
Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
Equivalent key-value pair: "Integrated Security=SSPI" equals "Trusted_Connection=yes"
Connecting to an SQL Server instance
The syntax of specifying the server instance in the value of the server key is the same for all connection strings for SQL Server.
Provider=SQLNCLI10;Server=myServerName\theInstanceName;Database=myDataBase; Trusted_Connection=yes;
Prompt for username and password
This one is a bit tricky. First you need to set the connection object's Prompt property to adPromptAlways. Then use the connection string to connect to the database.
oConn.Properties("Prompt") = adPromptAlways
oConn.Open "Provider=SQLNCLI10;Server=myServerAddress;DataBase=myDataBase;
Enabling MARS (multiple active result sets)
Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;MARS Connection=True;
Use ADO.NET 2.0 for MARS functionality. MARS is not supported in ADO.NET 1.0 nor ADO.NET 1.1.
Encrypt data sent over network
Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;Encrypt=yes;
Attach a database file on connect to a local SQL Server Express instance
Provider=SQLNCLI10;Server=.\SQLExpress;AttachDbFilename=c:\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
Why is the Database parameter needed? If the named database have already been attached, SQL Server does not reattach it. It uses the attached database as the default for the connection.
Attach a database file, located in the data directory, on connect to a local SQL Server Express instance
Provider=SQLNCLI10;Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
Why is the Database parameter needed? If the named database have already been attached, SQL Server does not reattach it. It uses the attached database as the default for the connection.
Database mirroring
If you connect with ADO.NET or the SQL Native Client to a database that is being mirrored, your application can take advantage of the drivers ability to automatically redirect connections when a database mirroring failover occurs. You must specify the initial principal server and database in the connection string and the failover partner server.
Provider=SQLNCLI10;Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;Initial Catalog=myDataBase;Integrated Security=True;
There is ofcourse many other ways to write the connection string using database mirroring, this is just one example pointing out the failover functionality. You can combine this with the other connection strings options available.

SQL Native Client 9.0 ODBC Driver

Type:    ODBC Driver
Usage:  Driver={SQL Native Client}
Manufacturer:  Microsoft
More info about this driver »
Standard security
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase; Uid=myUsername;Pwd=myPassword;
Are you using SQL Server 2005 Express? Don't miss the server name syntax Servername\SQLEXPRESS where you substitute Servername with the name of the computer where the SQL Server 2005 Express installation resides.
Trusted Connection
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;
Equivalent key-value pair: "Integrated Security=SSPI" equals "Trusted_Connection=yes"
Connecting to an SQL Server instance
The syntax of specifying the server instance in the value of the server key is the same for all connection strings for SQL Server.
Driver={SQL Native Client};Server=myServerName\theInstanceName;Database=myDataBase; Trusted_Connection=yes;
Prompt for username and password
This one is a bit tricky. First you need to set the connection object's Prompt property to adPromptAlways. Then use the connection string to connect to the database.
oConn.Properties("Prompt") = adPromptAlways
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;
Enabling MARS (multiple active result sets)
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;MARS_Connection=yes;
Use ADO.NET 2.0 for MARS functionality. MARS is not supported in ADO.NET 1.0 nor ADO.NET 1.1.
Encrypt data sent over network
Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;Encrypt=yes;
Attach a database file on connect to a local SQL Server Express instance
Driver={SQL Native Client};Server=.\SQLExpress;AttachDbFilename=c:\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
Why is the Database parameter needed? If the named database have already been attached, SQL Server does not reattach it. It uses the attached database as the default for the connection.
Attach a database file, located in the data directory, on connect to a local SQL Server Express instance
Driver={SQL Native Client};Server=.\SQLExpress; AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=dbname;Trusted_Connection=Yes;
Why is the Database parameter needed? If the named database have already been attached, SQL Server does not reattach it. It uses the attached database as the default for the connection.
Database mirroring
If you connect with ADO.NET or the SQL Native Client to a database that is being mirrored, your application can take advantage of the drivers ability to automatically redirect connections when a database mirroring failover occurs. You must specify the initial principal server and database in the connection string and the failover partner server.
Driver={SQL Server Native Client 10.0};Server=myServerAddress;Failover_Partner=myMirrorServerAddress;Database=myDataBase; Trusted_Connection=yes;
There is ofcourse many other ways to write the connection string using database mirroring, this is just one example pointing out the failover functionality. You can combine this with the other connection strings options available.

Please note if you are using TCP/IP (using the network library parameter) and database mirroring, including port number in the address (formed as servername,portnumber) for booth the main server and the failover partner can solve some reported issues.

SQL Server Native Client 10.0 ODBC Driver

Type:    ODBC Driver
Usage:  Driver={SQL Server Native Client 10.0}
Manufacturer:  Microsoft
More info about this driver »
Standard security
Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
Trusted Connection
Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;
Equivalent key-value pair: "Integrated Security=SSPI" equals "Trusted_Connection=yes"
Connecting to an SQL Server instance
The syntax of specifying the server instance in the value of the server key is the same for all connection strings for SQL Server.
Driver={SQL Server Native Client 10.0};Server=myServerName\theInstanceName; Database=myDataBase;Trusted_Connection=yes;
Prompt for username and password
This one is a bit tricky. First you need to set the connection object's Prompt property to adPromptAlways. Then use the connection string to connect to the database.
oConn.Properties("Prompt") = adPromptAlways
Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDataBase;
Enabling MARS (multiple active result sets)
Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes; MARS_Connection=yes;
Use ADO.NET for MARS functionality. MARS is not supported in ADO.NET 1.0 nor ADO.NET 1.1.
Encrypt data sent over network
Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDataBase; Trusted_Connection=yes;Encrypt=yes;
Attach a database file on connect to a local SQL Server Express instance
Driver={SQL Server Native Client 10.0};Server=.\SQLExpress; AttachDbFilename=c:\asd\qwe\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
Why is the Database parameter needed? If the named database have already been attached, SQL Server does not reattach it. It uses the attached database as the default for the connection.
Attach a database file, located in the data directory, on connect to a local SQL Server Express instance
Driver={SQL Server Native Client 10.0};Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;
Why is the Database parameter needed? If the named database have already been attached, SQL Server does not reattach it. It uses the attached database as the default for the connection.
Database mirroring
If you connect with ADO.NET or the SQL Native Client to a database that is being mirrored, your application can take advantage of the drivers ability to automatically redirect connections when a database mirroring failover occurs. You must specify the initial principal server and database in the connection string and the failover partner server.
Driver={SQL Server Native Client 10.0};Server=myServerAddress;Failover_Partner=myMirrorServerAddress;Database=myDataBase; Trusted_Connection=yes;
There is ofcourse many other ways to write the connection string using database mirroring, this is just one example pointing out the failover functionality. You can combine this with the other connection strings options available.

Please note if you are using TCP/IP (using the network library parameter) and database mirroring, including port number in the address (formed as servername,portnumber) for booth the main server and the failover partner can solve some reported issues.

.NET Framework Data Provider for ODBC

Type:    .NET Framework Wrapper Class Library
Usage:  System.Data.Odbc.OdbcConnection
Bridging to SQL Native Client 10.0 ODBC Driver
This is just one connection string sample for the wrapping OdbcConnection class that calls the underlying ODBC Driver. See respective ODBC driver for more connection strings to use with this class.
Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

SQLXML 4.0 OLEDB Provider

Type:    OLE DB Provider
Usage:  Provider=SQLXMLOLEDB.4.0;Data Provider=providername
Manufacturer:  Microsoft
More info about this provider »
Using SQL Server Native Client provider
Provider=SQLXMLOLEDB.4.0;Data Provider=SQLNCLI;Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

Context Connection

Type:    .NET Framework Class Library
Usage: 
Manufacturer:  Microsoft
More info about this class library »
Context Connection
Connecting to "self" from within your CLR stored prodedure/function. The context connection lets you execute Transact-SQL statements in the same context (connection) that your code was invoked in the first place.
C#
 using(SqlConnection connection = new SqlConnection("context connection=true"))
 {
     connection.Open();
     // Use the connection
 }

VB.Net
 Using connection as new SqlConnection("context connection=true")
     connection.Open()
     ' Use the connection
 End Using

Thứ Ba, 2 tháng 11, 2010

Kinh ngiệm làm mô Phân tích thiết kế Hướng đối tượng

Mình thì không có khả năng viết rồi, nhưng trình độ copy cũng thượng thừa, nên tập hợp các sơ đồ trên mạng cho bạn hiểu thêm
Đề bài:
Mình đang làm 1 chương trình quản lý đặt tiệc tại nhà hàng. minh post lên yêu cầu và mô hình use case, các bạn xem có ji góp ý nha.
---------------
yêu cầu:
Yêu cầu chức năng hệ thống.
• Lưu trữ thông tin khách hàng ( khách hàng đến tham khảo, đã đặt tiệc hoặc đang đặt tiệc: họ tên, địa chỉ, ngày nhập, ghi chú ....).
• Quản lý thông tin các sảnh của nhà hàng - là nơi đặt tiệc (số chổ ngồi, cách bài trí, sân khấu, vật dụng......).
• Quản lý danh mục món ăn (tên món ăn, đơn giá, đơn vị tính, thành phần nguyên liệu – tỉ lệ.).
• Quản lý nguyên liệu.
• Quản lý các dịch vụ: thuê màn chiếu, thuê TV,... ( tên dịch vụ, đơn giá... ).
• Quản lý hợp đồng đặt tiệc ( người đặt tiệc, thời gian tổ chức, time kết thúc, số người tham dự, nơi đặt tiệc, số bàn ăn, số món ăn trên mỗi bàn, thức uống, dịch vụ thêm, số tiền cọc,..)- có cảnh báo đặt trùng giờ, trùng sảnh,...
• Kết xuất danh sách các nguyên liệu cần chuẩn bị cho hợp đồng.
• Các báo cáo thống kê: Doanh thu, khách hàng, món ăn, nguyên liệu, sảnh đặt tiệc, số lần đặt tiệc của khách hàng....
• Các chức năng tìm kiếm khách hàng, hợp đồng, liệt kê phòng còn trống,...
• Phân quyền theo chức năng.

---------------------------------
Mô hình usecase.



Hình ảnh
//-----------------------------Bài trả lời-----------------------------
Đây là mô hình UML 1.0

Đây là mô hình 2.0


Hình ảnh
Cậu ấy vẽ ko sai, chỉ là vẽ theo kiểu cũ, đa số sách của KHTN viết từ năm 19... hồi đó và các giảng viên của KHTN rất lười tự cập nhật kiến thức cho mình.

Kinh nghiệm tạo biểu đồ Use Case

Theo đặc tả UML thì một biểu đồ use case (UC) là “biểu đồ mô tả mối quan hệ giữa các tác nhân (actor) và các use case trong một hệ thống”. Biểu đồ use case thường được sử dụng để:

  • Cung cấp cách nhìn tổng quan về toàn bộ hoặc một phần các yêu cầu chức năng của một hệ thống hoặc một tổ chức dưới dạng một mô hình cô đọng (Constantine and Lockwood 1999; Ambler 2001) hay một mô hình tác nghiệp (Rational Corporation 2002)
  • Trao đổi về phạm vi của một dự án phát triển (cái này theo tôi thấy rất quan trọng, thường người lập trình hay phải làm nhiều hơn những gì đã trao đổi với khách hàng)
  • Mô hình hóa kết quả phân tích các yêu cầu chức năng dưới dạng một mô hình use case hệ thống (Cockburn 2001; Ambler 2001)

Một mô hình use case là tổ hợp của một hay nhiều biểu đồ UC và tất cả các tài liệu hỗ trợ như các đặc tả UC và các định nghĩa các tác nhân. Trong hầu hết các mô hình UC thì các đặc tả UC thường là nhân tố cơ bản nhất đóng vai trò hỗ trợ cho tính liên kết giữa các yêu cầu được mô hình hóa. Mô hình UC cần được phát triển trên góc độ của những người liên quan đến dự án (stakeholders) chứ không phải dưới góc độ của người phát triển (thường bị nhìn dưới góc độ kỹ thuật)
1. Use Cases (UC)

Một UC mô tả một dãy các hoạt động để cung cấp một chức năng nào đó cho một tác nhân. UC được biểu diễn bằng hình ellipse bẹt trong biểu đồ UC như trong hình 1.

1.1 Tên UC cần bắt đầu bằng một động từ mạnh

Vì UC mô tả một dãy các hoạt động nên nó phải có một tên phải ánh đúng thực tế này, tên cần bắt đầu bằng một động từ mạnh. Ví dụ một tên UC tốt là “Rút tiền”, “Đăng ký tham gia hội thảo” hay “Chuyển hàng” vì chúng cho biết rõ là UC làm gì

Các UC bắt đầu bằng các động từ yếu (chung chung) như là “xử lý”, “thực hiện” hay “làm”, “giải quyết” thường sẽ gây vấn đề. Những tên như vậy sẽ dẫn tới những khó khăn trong việc trao đổi giữa những người liên quan, đặc biệt là người trả tiền vì họ là những người quen với những cụm từ “rút tiền” hơn là “xử lý một thao tác rút tiền”, vì như vậy sẽ hạn chế việc chúng ta có thể hiểu đúng được các yêu cầu của họ. Thêm vào đó những tên như “Xử lý thao tác rút tiền” hay “Thực hiện việc đăng ký hội thảo” làm người ta có cảm giác các UC được viết dưới góc độ của hệ thống chứ không phải góc độ của người dùng, và vì thế có thể dẫn đến khả năng không phản ánh được đúng những yêu cầu của người chi tiền cho dự án.

1.2 Tên UC nên dùng thuật ngữ chuyên ngành

Tên của UC phải có ý nghĩa thật rõ ràng đối với người chi tiền cho dự án. Ví dụ nếu người ta không thể đoán ra nghĩa của cụm “Phân phối sản phẩm qua các phương tiện vận chuyển” thì có thể dùng cụm từ “Chuyển hàng”. Hãy nhớ rằng biểu đồ UC cung cấp cái nhìn tổng thể về các yêu cầu chức năng của hệ thống vì thế nó phải phản ảnh những thuật ngữ được dùng phổ biển trong chuyên nghành mà hệ thống phục vụ.

1.3 Đặt những UC cơ bản nhất vào góc trên bên trái của biểu đồ

Thói quen chúng ta là đọc từ trái qua phải, từ trên xuống dưới và bắt đầu bằng góc trên bên trái. Vì thế khi nhìn vào biểu đồ chúng ta thường nhìn vào đó đầu tiên, và đó chính là vị trí tốt nhất để đặt các UC mô tả những chức năng quan trọng nhất mà hệ thống cung cấp.

1.4 Ngầm ám chỉ thứ tự thời gian bằng cách sắp xếp chồng các UC

Mặc dù các biểu đồ UC KHÔNG hề phản ánh thứ tự thời gian thực hiện các UC như kiểu phải làm xong UC A thì mới đến UC B nhưng trên thực tế chúng ta có thể làm biểu đồ UC trở nên dễn đọc hơn bằng các bố trí các UC nhằm ám chỉ thời gian. Một trong những cách đó là xếp chồng chúng lên nhau như trong hình 1, ngầm nói lên các UC nằm trên thường được thi hành trước là các UC nằm dưới nó. Ví dụ phải mở tài khỏan trước khi có thể nộp tiền vào hoặc rút tiền ra và việc đóng tài khoản là làm sau cùng. Lưu ý rằng thứ tự đó chỉ là ngầm hiểu vì trong suốt thời gian tồn tại của một tài khoản thì việc nộp tiền và rút tiền không phải lúc nào cũng theo thứ tự đó. Và cũng chỉ nên thực hiện việc sắp xếp nếu bạn thực sự quen thuộc với các nguyên tắc tác nghiệp. (không thì hỏi khách hàng)


Hình 1. Ngầm ám chỉ thứ tự thời gian giữa các UC.


Nếu muốn ấn định rõ ràng thứ tự thời gian giữa các UC, ví dụ như một người mua hàng qua mạng bắt buộc phải cung cấp địa chỉ ngầm định trước khi có thể thực hiện các thao tác đặt hàng, hay một user phải được tạo ra trước khi đăng nhập hệ thống, khi đó chúng ta sẽ một tả các tiền điều kiện (precondition) vào bên trong các UC để thể hiện yêu cầu này.

Để ý là trong hình 1 có một chút mâu thuẫn với hướng dẫn là đặt các UC quan trọng nhất lên góc trên bên trái. Trong trường hợp này, nếu muốn nhấn mạnh về chức năng chung của hệ thống thì việc cố gắng bám theo thứ tự thời gian là kém cần thiết hơn.

2. Tác nhân (actor)

Một tác nhân có thể là một người, một tổ chức hoặc một hệ thống ngoài đóng vai trò tương tác với hệ thống cần xây dựng. Tác nhân được biểu diễn bằng hình người rơm trong biểu đồ UC.

2.1 Đặt các tác nhân cơ bản vào góc trên bên trái của biểu đồ

Thói quen bắt đầu đọc từ góc trên bên trái biến góc này thành góc để biểu diễn những thông tin quan trọng nhất vì thể các tác nhân cơ bản nên đặt gần góc này. Điều này cũng rất nhất quán với nguyên tắc đặt các UC cơ bản nhất vào góc trên bên trái vì thường các tác nhân cơ bản nhất cũng lại thường liên quan đển những UC cơ bản.

Ví dụ trong hình 2 thì tác nhân Khách hàng được đặt gần góc trên bên trái của biểu đồ, nếu không có khách hàng thì hệ thống bán hàng trực tuyến sẽ gặp rắc rối to. Đối diện với đó là tác nhân Hỗ trợ khách hàng được đặt ở bên phải. Đồng thời cũng thấy rằng 2 UC quan trọng nhất để hỗ trợ cho việc bán một sản phẩm trên web cũng được đặt ở góc trên bên trái. Nguyên tắc ám chỉ thứ tự thời gian cũng được áp dụng để biểu diễn thứ tự Tim mặt hàng rồi mới đến Đặt hàng.


Hình 2. Mua hàng trực tuyến.

2.2 Vẽ các tác nhân ra ngoài diềm của biểu đồ UC

Mặc dầu các tác nhân tương tác với hệ thống nhưng họ vượt ra ngoài phạm vi kiểm soát của dự án. Điều này có thể thể hiện bằng cách vẽ các tác nhân ra ngoài diềm của biểu đồ UC. Trong hình 2 có thể thấy các tác nhân được đặt bên ngoài của biểu đồ chứ không phải là đặt vào trong lòng.

2.3 Đặt tên tác nhân bằng các danh từ đơn liên quan đến tác nghiệp

Tên của một tác nhân phải phản ảnh đúng vai trò của nó trong mô hình. Tên tác nhân thường là một danh từ đơn như là “Khách hàng”, “Quản trị” hay “Người duyệt”.

2.4 Mỗi tác nhân đều phải gắn với UC

Mỗi tác nhân đều phải liên quan đến ít nhất là 1 UC và UC nào cũng phải liên quan đến ít nhất 1 UC. Nhớ lại định nghĩa về UC là nó cung cấp một dịch vụ hữu ích nào đó cho một tác nhân. Nếu một UC không cung cấp được một dịch vụ nào cho ít nhất một tác nhân thì chúng ta cần UC đó làm gì? Một tác nhân không tham gia một UC nào thì tại sao phải mô hình hóa nó. (lập trình hướng chức năng thì cứ làm chức năng mà chẳng cần quan tâm là sau ai dùng!) Không nhất thiết là phải có tương ứng một – một giữa UC và tác nhân. Ví du trong hình 2, tác nhân “Khách hàng” liên quan đến vài UC trong khi đó UC “Nhận trợ giúp” lại có tới 2 tác nhân liên quan.

2.5 Tác nhân đại diện cho vai trò chứ không phải chức vụ

Một lỗi rất hay gặp với những người mới làm mô hình UC là thường sử dụng chức vụ của mọi người chứ không phải vai trò mà người đó đảm nhiệm khi đặt tên cho các tác nhân. Điều này sẽ dẫn tới một loạt tác nhân kiểu “Nhân viên tập sự”, “Nhân viên chính”, “Phó phòng” thay cho một tác nhân duy nhất là “Hỗ trợ khách hàng” như trong hình 2. Một dấu hiệu dễ thấy khi bạn mắc phải lỗi sử dụng chức vụ thay cho vai trò là có một số tác nhân với một số tên na na nhau đều liên quan đến cùng một (hay nhiều) UC.

Việc mô hình hóa vai trò chứ không dùng chức vụ không chỉ giúp đơn giản hóa biểu đồ UC mà con giúp cho biểu đồ UC của bạn có được tính độc lập với cấu trúc tổ chức bộ máy hành chính trong đơn vị sử dụng: bạn chắc chắn không muốn phải đổi tên tác nhân chỉ vì phòng tổ chức cán bộ đổi chức danh của “Cán bộ hỗ trợ kỹ thuật” thành “Chuyên viên mạng”. Cũng từ điều này chúng ta thấy “người rơm” trong biểu đồ UC phải gọi là “vai trò” mới đúng chứ không nên gọi là “tác nhân”

Tuy nhiên phải nhắc đến một yếu tố là nếu bạn làm việc trong một môi trường tương đối coi trọng tính “chính trị” thì việc đưa vào một vài tác nhân mang tên các chức vụ có thể mang lại những sự ủng hộ nhất định thì cũng nên cân nhắc ;). Ví dụ như khi xây dựng hệ thống hỗ trợ bán hàng qua mạng cho một công ty có một công đoàn mạnh đại diện cho cả ngàn nhân viên bán hàng, biểu đồ của chúng ta có thể đưa vào một vài vị trí trong đội ngũ bán hàng làm tên tác nhân để làm yên lòng công đoàn là các công đoàn viên sẽ không bị mất việc vào tay hệ thống tự động.

(Tôi cũng làm hệ thống trong đó tác nhân có tên như “Giám đốc” hay “Chủ tịch” gây được hứng thú đặc biệt cho khách hàng, trong khi đó thực ra tác nhân đó phải đặt tên là “người ký duyệt” – nghe hơi tầm thường)

2.6 Sử dụng kiểu để biểu diễn các tác nhân hệ thống

Trong hình 2 ta có thể nhận ra là “Bộ xử lý thanh toán” là một hệ thống tự động chứ không phải con người hay một tổ chức bởi vì có kiểu chỉ định rõ ràng. Kiểu được sử dụng trong các biểu đồ UC cụ thể trong đó quyết định về kiến trúc đã rõ ràng chứ không áp dụng cho khác biểu đồ UC cơ bản ban đầu khi phân tích hay không sử dụng trong biểu đồ UC tác nghiệp vì các biểu đồ này cần được độc lập với công nghệ.

2.7 Các tác nhân không tương tác với nhauCho dù trên thực tế các tác nhân có thể tương tác với nhau nhưng thông tin nay không thể được biểu diễn trong biểu đồ UC – bạn không bao giờ được phép vẽ một liên kết từ mội tác nhân tới một tác nhân khác (quan hệ thừa kế giữa 2 tác nhân thì tồn tại nhưng không hề biểu diễn sự tương tác). Điều này vẫn đúng kể cả khi UC mô tả sự tương tác giữa 2 tác nhân trong hệ thống. Ví dụ UC “Nhận trợ giúp” trong hình 2 mô tả việc một người nào đó trong vai trò “Hỗ trợ khách hàng” thực hiện việc trợ giúp một ai đó đang ở vai trò “Khách hàng”. Lúc này vấn đề chi tiết của quá trình tương tác giữa hai tác nhân này sẽ được viết trong phần mô tả UC chứ không phải được mô tả bằng một đường kẻ giữa hai tác nhân trong biểu đồ.

(Bài viết của anh Bùi Trường Sơn - PTIT)
--YHT

Chủ Nhật, 31 tháng 10, 2010

3 layer trong c#

Tài liệu cũ của thầy Long Nam: http://www.mediafire.com/?dmv252iw6nz

Câu chuyện về game máy tính phổ biến nhất thế giới

20 năm qua, có một trò chơi thu hút nhiều nhân viên văn phòng hơn bất kỳ game nào khác dù nội dung của nó không chút bạo lực hay có yếu tố sex. Đó là game chơi bài Windows Solitaire.
Với sự nở rộ của game bắn súng, game nông trại, game nhập vai trực tuyến..., các trò chơi đã xuất hiện cả thập kỷ sẽ dễ dàng bị lãng quên. Tuy nhiên, số người dùng Solitaire vẫn lên đến hàng trăm triệu.
Game lừng danh Windows Solitaire.

Theo blog công nghệ Gizmodo, nhờ được cài sẵn trong máy tính, một số trò chơi như dò mìn Minesweeper, xếp hình Tetris... cũng không khó lôi kéo vài chục triệu người, nhưng duy nhất Solitaire được Microsoft ưu ái gọi là "ứng dụng Windows được dùng nhiều nhất thế giới" vào năm 2004. Với số lượng lớn người dùng Word, Excel, Outlook Express và Internet Explorer mỗi ngày, đây thực sự là danh hiệu đáng ngưỡng mộ của Solitaire.

Nhiều chuyên gia nhận định, trước khi game nông trại trên Facebook trỗi dậy, trò chơi của Microsoft là mối đe dọa lớn nhất tới năng suất làm việc tại các công sở. Nhưng một nghiên cứu khác của Đại học Utrecht (Hà Lan) năm 2003 cho thấy những ai được phép chơi Solitaire trong giờ lại hiệu quả và cảm thấy hứng thú với công việc hơn so với người bị cấm. Game này được ví như một tách cafe vào giờ giải lao giúp nhân viên thư giãn.
Một số phiên bản của Solitaire như Spider Solitaire hay FreeCell.
Còn Microsoft có lý do để đưa Solitaire vào Windows: khiến mọi người thoải mái khi sử dụng máy tính và hệ điều hành. Nguyên nhân này hiện nay không còn quan trọng, nhưng trở lại năm 1990, Windows là một khái niệm tương đối mới với nhiều người, việc di chuyển chuột cũng khá khó khăn và máy tính cá nhân vẫn là thứ xa lạ với những ai trưởng thành trong môi trường của bút chì và máy đánh chữ. Chính sự đơn giản và quen thuộc của Solitaire giúp người sử dụng thấy dễ chịu khi dùng chuột để trỏ (point) và nhấn (click).

Dù là game nổi tiếng nhất thế giới, ít ai biết đến tên tuổi những người làm ra nó. Họ gần như không được thưởng hay vinh danh gì bởi họ là nhân viên của Microsoft và viết mã, thiết kế... được xem là công việc thường ngày của họ.
Klondike do Susan Kare thiết kế.
Phiên bản đầu tiên của Solitaire được đưa vào Windows năm 1990 là Klondike, do Susan Kare thiết kế và người viết những dòng code cho game là Wes Cherry. Ngay khi đang phát triển, Cherry đã dự đoán khả năng trò chơi này sẽ được nhân viên văn phòng yêu thích nhiều nên đã chèn mã "boss key" trong game để khi nhấn nút, bộ bài sẽ biến mất và màn hình hiển thị vài đoạn mã .C (giả vờ như đang làm việc). Tuy nhiên, Microsoft yêu cầu ông gỡ bỏ tính năng này trong phiên bản được đưa vào Windows 3.0.

Windows Solitaire thường xuyên được cập nhật với đồ họa và luật chơi mới theo hệ điều hành. Ví dụ, phiên bản trên Windows 7 và Vista cho phép người chơi lưu (save) game đang chơi dở.
Theo VnExpress

Thứ Năm, 28 tháng 10, 2010

Tìm hiểu về Linux Kernel và những chức năng chính của chúng

Quản Trị Mạng - Với hơn 13 triệu dòng lệnh, Linux kernel là 1 trong những dự án mã nguồn mở rộng lớn nhất trên thế giới, nhưng chính xác chúng là gì và chúng làm gì trong hệ thống?

Kernel là gì?
Khái niệm kernel ở đây nói đến những phần mềm, ứng dụng ở mức thấp (low-level) trong hệ thống, có khả năng thay đổi linh hoạt để phù hợp với phần cứng. Chúng tương tác với tất cả ứng dụng và hoạt động trong chế độ user mode, cho phép các quá trình khác – hay còn gọi là server, nhận thông tin từ các thành phần khác qua inter-process communication (IPC).

Các loại kernel khác nhau

Về bản chất, có nhiều cách để xây dựng cấu trúc và biên dịch 1 bộ kernel nhất định từ đầu. Nhìn chung, với hầu hết các kernel hiện nay, chúng ta có thể chia ra làm 3 loại: monolithic, microkernel, và hybrid. Linux sử dụng kernel monolithic trong khi OS X (XNU) và Windows 7 sử dụng kernel hybrid.

Microkernel:

Microkernel có đầy đủ các tính năng cần thiết để quản lý bộ vi xử lý, bộ nhớ và IPC. Có rất nhiều thứ khác trong máy tính có thể được nhìn thấy, tiếp xúc và quản lý trong chế độ người dùng. Microkernel có tính linh hoạt khá cao, vì vậy bạn không phải lo lắng khi thay đổi 1 thiết bị nào đó, ví dụ như card màn hình, ổ cứng lưu trữ... hoặc thậm chí là cả hệ điều hành. Microkernel với những thông số liên quan footprint rất nhỏ, tương tự với bộ nhớ và dung lượng lưu trữ, chúng còn có tính bảo mật khá cao vì chỉ định rõ ràng những tiến trình nào hoạt động trong chế độ user mode, mà không được cấp quyền như trong chế độ giám sát - supervisor mode.

Ưu điểm:
 - Tính linh hoạt cao
 - Bảo mật
 - Sử dụng ít footprint cài đặt và lưu trữ

Nhược điểm:
 - Phần cứng đôi khi “khó hiểu” hơn thông qua hệ thống driver
 - Phần cứng hoạt động dưới mức hiệu suất thông thường vì các trình điều khiển ở trong chế độ user mode
 - Các tiến trình phải chờ đợi để được nhận thông tin
 - Các tiến trình không thể truy cập tới những ứng dụng khác mà không phải chờ đợi

Monolithic Kernel:

Với Monolithic thì khác, chúng có chức năng bao quát rộng hơn so với microkernel, không chỉ tham gia quản lý bộ vi xử lý, bộ nhớ, IRC, chúng còn can thiệp vào trình điều khiển driver, tính năng điều phối file hệ thống, các giao tiếp qua lại giữa server... Monolithic tốt hơn khi truy cập tới phần cứng và đa tác vụ, bởi vì nếu 1 chương trình muốn thu thập thông tin từ bộ nhớ và các tiến trình khác, chúng cần có quyền truy cập trực tiếp và không phải chờ đợi các tác vụ khác kết thúc. Nhưng đồng thời, chúng cũng là nguyên nhân gây ra sự bất ổn vì nhiều chương trình chạy trong chế độ supervisor mode hơn, chỉ cần 1 sự cố nhỏ cũng khiến cho cả hệ thống mất ổn định.

Ưu điểm:
 - Truy cập trực tiếp đến các phần cứng
 - Dễ dàng xử lý các tín hiệu và liên lạc giữa nhiều thành phần với nhau
 - Nếu được hỗ trợ đầy đủ, hệ thống phần cứng sẽ không cần cài đặt thêm driver cũng như phần mềm khác
 - Quá trình xử lý và tương tác nhanh hơn vì không cần phải chờ đợi

Nhược điểm:
 - Tiêu tốn nhiều footprint cài đặt và lưu trữ
 - Tính bảo mật kém hơn vì tất cả đều hoạt động trong chế độ giám sát - supervisor mode

Hybrid Kernel: 

Khác với 2 loại kernel trên, Hybrid có khả năng chọn lựa và quyết định những ứng dụng nào được phép chạy trong chế độ user hoặc supervisor. Thông thường, những thứ như driver và file hệ thống I/O sẽ hoạt động trong chế độ user mode trong khi IPC và các gói tín hiệu từ server được giữ lại trong chế độ supervisor. Tính năng này thực sự rất có ích vì chúng đảm bảo tính hiệu quả của hệ thống, phân phối và điều chỉnh công việc phù hợp, dễ quản lý.

Ưu điểm:
 - Các nhà phát triển có thể chọn và phân loại những ứng dụng nào sẽ chạy trong chế độ thích hợp
 - Sử dụng ít footprint hơn so với monolithic kernel
 - Có tính linh hoạt và cơ động cao nhất

Nhược điểm:
 - Có thể bị bỏ lại trong quá trình gây treo hệ thống tương tự như với microkernel
 - Các trình điều khiển thiết bị phải được quản lý bởi người dùng

Vậy những file Linux Kernel này ở đâu?

Các file kernel này, trong Ubuntu chúng được lưu trữ tại thư mục /boot và đặt tên theo vmlinuz-version. Khi bộ nhớ ảo bắt đầu được phát triển để thực hiện các tác vụ đa luồng, tiền tố vm sẽ được đặt vào đầu các file kernel để phân biệt khả năng hỗ trợ công nghệ ảo hóa. Kể từ đó, Linux kernel được gọi là vmlinux, nhưng hệ thống kernel này đã phát triển với tốc độ quá nhanh, lớn hơn so với dung lượng bộ nhớ boot chuẩn của hệ điều hành, vì vậy những file kernel này đã được nén theo chuẩn zlib – và ký tự z được thêm vào là do như vậy. Ngoài ra còn 1 số định dạng nén thường gặp khác là LZMA hoặc BZIP2, nhưng chúng vẫn được gọi chung là zImage.

Các phiên bản được sắp xếp thứ tự theo định dạng A.B.C.D, trong đó A.B thường là 2.6, C đại diện cho phiên bản, và D là ký hiệu các bản vá lỗi hoặc patch:
Trong thư mục /boot còn có rất nhiều file quan trọng khác như, initrd.img-version, system.map-version, và config-version. File initrd được dùng như 1 ổ đĩa RAM để giải nén và kích hoạt các file kernel thực sự, còn file system.map được dùng để quản lý bộ nhớ trước khi kernel được tải đầy đủ, và file config làm nhiệm vụ thông báo cho kernel biết những lựa chọn hoặc module nào sẽ được nạp vào quá trình hệ thống khởi động.

Cấu trúc file Linux Kernel
Thực tế, Windows đã có tất cả các trình điều khiển sẵn có và người sử dụng chỉ việc kích hoạt các trình điều khiển tương ứng để sử dụng. Và đó cũng chính là nhiệm vụ các module kernel Linux đảm nhiệm, hay còn được gọi là loadable kernel module (LKM), rất cần thiết để giữ các chức năng đi kèm với toàn bộ hệ thống phần cứng hoạt động mà không ảnh hưởng đến bộ nhớ. 1 module thông thường sẽ gán chức năng cơ bản tới các kernel như điều khiển driver, file hệ thống... LKM có phần đuôi mở rộng là .ko và được lưu trữ trong thư mục /lib/modules, người sử dụng có thể thiết lập thuộc tính tự khởi động, cho phép tải hoặc không trong khi hệ điều hành khởi động, bằng cách dùng lệnh menuconfig, can thiệp vào file /boot/config, hoặc bằng cách sử dụng lệnh modprobe.
Các module của các hãng thứ 3 thường có sẵn trên 1 số distributor, ví dụ như Ubuntu, hoặc không được tích hợp sẵn ở chế độ mặc định. Các nhà phát triển phần mềm (ví dụ nVidia, ATI hoặc các hãng khác), không cung cấp mã nguồn nhưng họ đã tự xây dựng và biên dịch các module cần thiết, sau đó cung cấp cho người sử dụng file .ko. Và tất nhiên, có nhiều module hoàn toàn miễn phí, trong khi một số khác thì không.

Như vậy, các bạn đã có thể hình dung được sự quan trọng của kernel. Kernel của Linux khác hẳn so với Mac OS X và Windows bởi trình điều khiển driver cũng như cách thức quản lý và hỗ trợ khác. Trên đây là 1 số thông tin cơ bản và cần thiết giúp mọi người có thể hiểu được kernel là gì, chúng hoạt động như thế nào và tại sao chúng lại cần thiết như vậy. Chúc các bạn thành công!
T.Anh (theo HowToGeek)

Bài đăng phổ biến