- Nh vậy HĐH là hệ chuyên gia ra đời sớm nhất và thuộc loại hoàn thiện nhất. 4. Phân loại hệ điều hành a. Hệ điều hành đơn nhiệm và hệ điều hành đa nhiệm Dựa vào cách thức đa chơng trình vào bộ nhớ, chọn chơng trình có sẵn trong bộ nhớ để processor thực hiện, ngời ta phân thành: hệ điều hành đơn nhiệm, đa nhiệm. Lợi ích từ khóa học. - Cài đặt và tùy chỉnh hệ điều hành Ubuntu. - Sử dụng các phần mềm ứng dụng trên Ubuntu. - Sử dụng các phần mềm ứng dụng trên Ubuntu. - Sử dụng cửa sổ dòng lệnh quản trị Ubuntu. - Áp dụng cho những bạn làm về CNTT cần biết về Linux để lập 1. Hệ điều hành Linux là gì? - Định nghĩa - Cấu trúc hệ điều hành Linux - Công dụng của hệ điều hành Linux 2. Ưu, nhược điểm của hệ điều hành Linux 3. So sánh hệ điều hành Windows và Linux 4. Các phiên bản của hệ điều hành Linux - Ubuntu - Linux Mint - Debian - Fedora - CentOS Linux - OpenSUSE/SUSE Linux Enterprise - Mageia Linux - Slackware Linux Điện thoại Android. Lịch sử hệ điều hành Android. hoàng_241. + Theo dõi. 11 năm. Android là một hệ điều hành dành cho các thiết bị di động bao gồm phần mềm trung gian và các ứng dụng chính, và sử dụng một phiên bản đã sửa đổi của hạt nhân Linux. Nó ban đầu được phát 11 Nguyên lý hệ điều hành Nguyễn Hải Châu Khoa Công nghệ thông tin Trường Đại học Công nghệ 2 Đồng bộ hóa tiến trình 3 Ví dụ đồng bộ hóa (1) Tiến trình ghi P: while (true) { while (counter==SIZE) ; buf [in] = nextItem; in = (in+1) % SIZE; counter++; } buf: Buffer SIZE: cỡ của buffer counter he dieu hang1 java enthalten Mehr Java Update 8..3410.10 Oracle - 2MB - Freeware - Das Java SE Runtime Environment enthält die Java Virtual Machine (JVM),Klassenbibliotheken und den Java application launcher, die notwendig sind,um Programme, die in der Programmiersprache Java geschrieben wurden, auszuführen.Das JRE … mehr Info Mehr fZYbmn. Ton Duc Thang University Faculty of Information Technology dungcamquang Object Oriented Programming 503005 – 2023 1/14 OBJECT-ORIENTED PROGRAMMING LAB 1 JAVA, HOW TO PROGRAM I. Objective After completing this first lab tutorial, you can • Set up the Java Environment, compile, and run the Java program. • Know the primitive types and basic operators in Java. • Use the basic statements conditional statements, loop statements, and declare the method in Java. • Use input and output syntax in Java. II. Overview of Java Java is a general-purpose computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere" WORA, meaning that compiled Java code can run on all platforms that support Java without the need for recompilation. Java applications are typically compiled to bytecode that can run on any Java virtual machine JVM regardless of computer architecture. As of 2016, Java is one of the most popular programming languages in use, particularly for client-server web applications, with a reported 9 million developers. The language derives much of its syntax from C and C++, but it has fewer low-level facilities than either of them. III. Environment Setup This section will help you to set up the environment for the Java programming language. Follow the steps below • Download and install the Java SE Development Kit. You are recommended to use Java version 11. If you use another version, please be careful with the syntax. But all of your work when you are doing the exams or the exercises will be assigned with Java 11. • Setting up the Path for Windows o Right-click on This PC and select Properties. o Click Advanced system settings. o Click the Path to include the directory path of the installed JDK as in FIG. Assuming you have installed it in C\Program Files\Java\ then add it to the Path. Chương 2CẤU TRÚC HỆ ĐIỀU HÀNHCấu trúc hệ điều hành Các thành phần hệ thống Các dịch vụ của hệ điều hành Các lời gọi hệ thống Các chương trình hệ thống Cấu trúc hệ điều hành Quản lý tiến trình Một tiến trình là một chương trình đang thực thi. Một chương trình không làm gì trừ khi các chỉ thị của nó được thực thi bởi một CPU. Một tiến trình là một công việc hay chương trình chia sẻ thời gian Một tiến trình cần các tài nguyên xác định gồm thời gian CPU, bộ nhớ, tập tin, các thiết bị xuất /nhập để hoàn thành tác vụ của nó. Các tài nguyên này được cấp cho tiến trình khi nó được tạo ra, hay được cấp phát tới nó khi nó đang chạy. Khi tiến trình này kết thúc, hệ điều hành sẽ đòi lại bất cứ tài nguyên nào có thể dùng lại. ..ản lý tiến trình Một tiến trình là một đơn vị công việc trong hệ thống. Một hệ thống chứa tập các tiến trình, một vài tiến trình này là các tiến trình hệ điều hành thực thi mã hệ thống và các tiến trình còn lại là các tiến trình người dùng chúng thực thi mã người dùng Hệ điều hành có nhiệm vụ cho các hoạt động sau khi đề cập đến chức năng quản lý tiến trình - Tạo và xoá các tiến trình người dùng và hệ thống - Tạm dừng và thực thi tiếp tiến trình - Cung cấp các cơ chế đồng bộ hoá tiến trình - Cung cấp các cơ chế giao tiếp tiến trình - Cung cấp cơ chế quản lý bế tắc Quản lý lưu trữ Máy tính có thể lưu thông tin trên nhiều loại phương tiện lưu trữ vật lý khác nhau Mỗi phương tiện được điều khiển bởi một thiết bị, như một ổ đĩa hay ổ băng từ Các thuộc tính của phương tiện này bao gồm tốc độ truy xuất, dung lượng, tốc độ truyền dữ liệu và phương pháp truy xuất tuần tự hay ngẫu nhiên Hệ điều hành có nhiệm vụ thực hiện các hoạt động trong việc quản lý hệ thống tập tin - Tạo và xoá tập tin - Tạo và xoá thư mục - Hỗ trợ các hàm nguyên thuỷ để thao tác tập tin và thư mục - Ánh xạ các tập tin trên các thiết bị lưu trữ phụ - Sao lưu dự phòng tập tin trên các phương tiện lưu trữ ổn định Bảo vệ và bảo mật Nếu một hệ thống máy tính có nhiều người dùng và cho phép thực thi đồng thời nhiều tiến trình, thì các tiến trình khác nhau phải được bảo vệ từ các hoạt động của tiến trình khác Các cơ chế đảm bảo rằng các tập tin, phân đoạn bộ nhớ, CPU, và các tài nguyên khác có thể được điều hành chỉ bởi các tiến trình có quyền phù hợp từ hệ điều hành Bảo vệ là một cơ chế để điều khiển truy xuất của các chương trình, tiến trình hay người dùng tới tài nguyên được định nghĩa bởi một hệ thống máy tính Bảo vệ có thể cải tiến khả năng tin cậy bằng cách phát hiện các lỗi tiềm tàng tại các giao diện giữa các hệ thống con thành phần Tài nguyên không được bảo vệ không thể ngăn chặn việc sử dụng bởi người dùng không có quyền Các dịch vụ hệ thống Hệ điều hành cung cấp một tập các dịch vụ các tính năng hữu ích cho người dùng cont. Giao tiếp–Các tiến trình trên cùng một máy /trên một mạng có thể trao đổi thông tin với nhau - Giao tiếp có thể thông qua sử dụng bộ nhớ chia sẻ hoặc truyền thông báo Sửa lỗi Xác định được lỗi xuất hiện tại CPU hay bộ nhớ, trong thiết bị vào /ra hay trong chương trình người dùng Với mỗi loại lỗi, Hệ điều hành OS lựa chọn một hoạt động thích hợp để đảm bảo việc tính toán đúng đắn và nhất quán. Các tính năng gỡ lỗi Các dịch vụ hệ thống Một số tính năng khác của OS cho phép thực thi hệ thống hiệu quả nhờ chia sẻ tài nguyên Phân phối tài nguyên Kế toán cho biết người dùng nào sử dụng bao nhiêu và những loại tài nguyên hệ thống nào. Bảo vệ và bảo mật bảo vệ việc sử dụng thông tin trong các hệ thống đa người dùng, các hệ thống nối mạng; bảo vệ các tiến trình thực thi đồng thời Ví dụ về các lời gọi hệ thống Chuỗi các lời gọi hệ thống cho việc sao chép nội dung từ một file sang file khác Ví dụ của một API chuẩn Hàm Readfile trong Win32 API –hàm cho phép đọc từ một file Mối quan hệ giữa API –lời gọi hệ thống và OSVí dụ về thư viện C chuẩnTruyền tham số thông qua bảngCác kiểu lời gọi hệ thống Quản lý tiến trình Quản lý file Quản lý thiết bị Duy trì thông tin Giao tiếp Theo dõi hiệu năng của hệ điều hành HĐH mà ứng dụng được chạy trên đó là bước đầu tiên trong quá trình cải tiến hiệu năng của ứng dụng. Chúng ta quan sát hệ điều hành để có được cảm nhận về vấn đề hiệu năng đang phát sinh. Nói cách khác, chúng ta thăm dò xem ứng dụng có bộc lộ ra triệu chứng nào cho thấy hiệu năng kém không? Căn cứ vào triệu chứng quan sát được, chúng ta có thể xác định các bước hành động tiếp theo trong việc chẩn đoán các vấn đề hiệu năng. Theo dõi hiệu năng hệ điều hành được thực hiện thông qua các hoạt động theo dõi sau Theo dõi hoạt động của CPU Theo dõi hoạt động vào/ra mạng Theo dõi hoạt động vào/ra ổ đĩa Theo dõi hoạt động của bộ nhớ ảo Theo dõi hoạt động của các tiến trình Theo dõi hoạt động của CPU Các chỉ số đo đạc về sử dụng CPU User CPU time Là lượng thời gian CPU dành cho tiến trình chạy các tác vụ của riêng nó chạy ngoài kernel của hệ điều hành. System CPU time Là lượng thời gian CPU dùng để khai thác tài nguyên, chạy trong kernel của hệ điều hành. Idle CPU time Là lượng thời gian CPU không được sử dụng. Voluntary context switch Tiến trình tự nguyện nhường lại CPU sau khi chạy hết thời gian dự kiến của nó hoặc nó yêu cầu sử dụng tài nguyên hiện không khả dụng. Involuntary context switch Tiến trình bị gián đoạn và nhường lại CPU trước khi hoàn tất thời gian chạy theo lịch trình của nó do hệ thống xác định một tiến trình ưu tiên cao hơn cần thực thi. Việc theo dõi hoạt động của CPU cần được xem xét thêm nếu các chỉ số đo đạc thể hiện Giá trị System time cao chỉ ra rằng có một lượng lớn chu kỳ chạy của CPU được sử dụng trong kernel của hệ điều hành. Giá trị này cũng chỉ ra rằng có thể đã xảy ra tình huống tranh giành tài nguyên trong hệ thống. Việc giảm lượng thời gian thực thi mã lệnh trong kernel sẽ làm tăng thời lượng thực thi tác vụ của riêng ứng dụng tăng User time. Giá trị VCX cao có thể là do sự tương tranh giữa các hàm hoặc khối đồng bộ synchronized method/block hoặc các khóa lock của Java Concurrency API. Giá trị ICX cao cần phải xem xét do thao tác context switch rất tốn kém - thứ nhất mỗi một context switch tiêu tốn một lượng lớn xung nhịp CPU CPU clock cycle; thứ hai, context switch có thể khiến cho phải nạp dữ liệu từ bộ nhớ vào thanh ghi thay vì từ CPU cache, việc này cũng tiêu tốn lượng xung nhịp CPU lớn. Do đó, ứng dụng phát sinh giá trị ICX cao cũng cần phải được xem xét về các vấn đề hiệu năng. Công cụ theo dõi về sử dụng CPU prstat Solaris Công cụ prstat là phần mềm dòng lệnh có chức năng khảo sát hoạt động của các tiến trình đang chạy trên hệ thống và hiển thị báo cáo thống kê dựa trên tùy chọn về thông tin muốn kết xuất và thứ tự sắp xếp. prstat cung cấp các tùy chọn cho phép chỉ khảo sát trên một số các tiến trình xác định bởi PID, UID, CPU ID, Mặc định, prstat hiển thị toàn bộ thời gian sử dụng CPU đo được trên mỗi tiến trình. Để hiển thị thông tin trạng thái chi tiết có chứa thông tin VCX và IVCX, chúng ta có thể sử dụng prstat với tham số -m Để hiển thị thông tin về từng tiến trình con lightweight process, chúng ta sử dụng tham số -L. Tương tự ví dụ trên, để hiển thị thông tin trạng thái chi tiết với từng tiến trình con, chúng ta kết hợp hai tham số -Lm như sau cpubar Solaris Công cụ giao diện đồ họa hiển thị thông tin thống kê tổng quan về hoạt động của CPU, các tiến trình, tình trạng sử dụng bộ nhớ. Đối với CPU, màu Xanh lá cây User time, Đỏ System tile, Xanh da trời Idle time. vmstat Linux & Solaris Công cụ vmstat là phần mềm dòng lệnh dùng để hiển thị lên màn hình console các thông số về sử dụng CPU trong nhiều lần cách quãng liên tiếp. Mỗi thông số đọc được trong một lần đọc được gọi là mẫu chọn sample. Những mẫu chọn này cung cấp một cái nhìn tổng quan về tỉ lệ phần trăm user time us, system time sy và idle time id. mpstat Linux & Solaris Công cụ mpstat là phần mềm dòng lệnh dùng để hiển thị thống kê về hoạt động của bộ vi xử lý micro-processor. mpstat trên Linux và Solaris có một chút khác biệt ở thông tin hiển thị. Kết quả chạy lệnh trên Linux $ mpstat Linux drupalex-ubuntu 10/13/2014 _i686_ 2 CPU 023155 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 023155 PM all Kết quả chạy lệnh trên Solaris 11 $ mpstat CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl 0 0 0 0 329 121 169 6 0 0 0 406 0 1 0 98 Theo dõi Network I/O Thông tin cần biết về Network I/O Nếu một ứng dụng có sử dụng mạng hoặc ổ đĩa, ta dễ dàng nhận ra hiệu năng đạt được tốt nhất khi giảm thiểu số lượng truy cập mạng hoặc ổ đĩa. Vì vậy, nếu một ứng dụng truy cập mạng hay ổ đĩa, hãy suy xét xem ứng dụng tạo ra có truy cập quá nhiều mạng hoặc ổ đĩa không? Giám sát các ứng dụng truy cập mạng sẽ cung cấp cho bạn một “cảm giác” về lượng truy cập mạng có quá nhiều hay không? Công cụ theo dõi Network I/O tcptop Solaris Công cụ dòng lệnh tcptop hiển thị thông tin thống kê về lưu lượng truy cập mạng của từng tiến trình trong hệ thống. Nó chỉ ra rằng, người dùng nào đang chạy cái gì và sử dụng bao nhiêu thông lượng mạng. nicstat Solaris Công cụ dòng lệnh nicstat hiển thị thông tin thống kê về lưu lượng mạng network trafic, tính theo Kbyte, số lượng Packet hoặc dung lượng trung bình. Các trường thông tin hiển thị bao gồm Int Interface tên của giao diện mạng. rKB/s read Kbytes/s tốc độ đọc mạng tính theo Kilobyte. wKB/s write Kbytes/s tốc độ ghi mạng tính theo Kilobyte. rPk/s read Packets/s tốc độ đọc mạng tính theo số lượng Packet / giây. wPk/s write Packets/s tốc độ ghi mạng tính theo số lượng Packet / giây. rAvs read Average size, bytes kích thước đọc trung bình, tính theo số byte. wAvs write Average size, bytes kích thước ghi trung bình, tính theo số byte. %Util %Utilisation r+w/ifspeed tính bằng số lượng byte được chuyển chia cho tốc độ của Interface nếu xác định được tốc độ Interface. Sat Saturation độ bão hòa được xác định bằng cách đếm số lượng lỗi đọc/ghi phát sinh bởi Interface chạy ở mức bão hòa. Theo dõi Disk I/O Thông tin cần biết về Disk I/O Số lượng các lần truy cập ổ đĩa Mỗi lần truy cập ổ đĩa là một hoạt động tốn kém đối với hệ thống, quá trình gửi - chờ - nhận kết quả Round Trip Time của thao tác đọc dữ liệu từ ổ đĩa rất tốn kém thời gian. Do đó chúng ta mong muốn tối thiểu hóa số lần truy cập ổ đĩa để đọc dữ liệu. Độ trễ và độ trễ trung bình là khoảng thời gian cần có để lấy dữ liệu từ ỗ đĩa. Công cụ theo dõi Disk I/O iostat Linux & Solaris Công cụ dòng lệnh iostat được sử dụng để thống kê các thông số vào / ra của các thiết bị lưu trữ. iotop Linux & Solaris Công cụ iotop là phần mềm dòng lệnh, có chức năng theo dõi thông tin về quá trình vào ra I/O ổ đĩa từ hệ điều hành nhân Linux từ và hiển thị thông tin dưới dạng bảng liệt kê lượng truy cập vào ra ổ đĩa thực hiện bởi các tiến trình. Theo dõi Virtual Memory Theo dõi Virtual Memory để làm gì? Quan sát quá trình phân trang paging trong bộ nhớ ảo để xác định tình trạng hoán chuyển swapping bộ nhớ của các tiến trình. Đối với chương trình Java, việc hoán chuyển vùng nhớ Heap từ bộ nhớ Memory/RAM vào vùng nhớ ảo Virtual Memory/HarDisk sẽ làm giảm hiểu năng rất lớn, là do chức năng thu dọn bộ nhớ trong chương trình Java thường xuyên quét qua vùng nhớ Heap để xác định và thu hồi các đối tượng không còn sử dụng nữa. Nếu vùng nhớ Heap bị chia cắt, hoặc bị chuyển vào Virtual Memory thì quá trình thu dọn bộ nhớ sẽ thực hiện rất chậm. Chính vì vậy, chúng ta cần theo dõi các tiến trình Java để xác định xem có sự hoán chuyển bộ nhớ hay không, từ đó có các giải pháp điều chỉnh để tăng hiệu năng. Công cụ theo dõi Virtual Memory vmstat Solaris & Linux prstat Solaris top Linux Performance Monitor Windows DTrace Solaris cpubar Solaris – Performance Tools CD meminfo Solaris – Performance Tools CD Theo dõi pages in/out trong Solaris Sử dụng công cụ vmstat, ta có thể theo dõi được các thông số pages in, pages out và page scan rate. Khi hệ thống bắt đầu thực hiện hoán chuyển dữ liệu vào virtual memory, các giá trị page in, page out và scan rate đều tăng. Khi hệ thống thực hiện page in và page out mà không phát sinh hoạt động scan rate, hoặc có một số thay đổi scan rate nhỏ và sớm kết thúc, là được. Theo dõi pages in/out trong Linux Xử lý vấn đề Swapping Memory Đối với ứng dụng Java, việc vùng nhớ Heap bị hoán chuyển vào Virtual Memory sẽ khiến hiệu năng chương trình giảm nghiêm trọng. Khi phát hiện hệ thống phải swapping memory nhiều, có thể xử lý bằng các cách sau Phân tích và xác định và giảm kích thước phù hợp cho vùng Java Heap. Thêm dung lượng bộ nhớ vật lý cắm thêm RAM. Giảm bớt số lượng ứng dụng đang chạy trên máy tính. Kết hợp các phương án trên. Bạn Đã Biết Gì Về Hệ Điều Hành Linux? Hôm nay, mình sẽ chia sẻ một số điều cơ bản về linux, lợi ích khi sử dụng linux và kinh nghiệm sử dụng hệ điều hành linux thế nào cho hiệu quả. 1. Không phù hợp để chơi game !2. Linux hoàn toàn miễn phí và Open Source Chào các bạn, như các bạn đều đã biết, hiện nay có 3 hệ điều hành phổ biến nhất cho máy tính đó là Windows, macOS và Linux. Mỗi hệ điều hành thì lại có những ưu và nhược điểm riêng, phù hợp với các tác vụ nhất định. Windows có lẽ là một hệ điều hành đã quá quen thuộc với người dùng phổ thông rồi, và macOS cũng vậy vì đã xài Macbook thì mặc định sẽ là macOS mà – tuy nhiên mức độ phổ biến thì không thể bằng Windows được. Còn với Linux và các phiên bản phát triển từ nhân Linux như Ubuntu, Kali Linux, Pop!_OS… thì không phải ai cũng lựa chọn để dùng và biết cách để dùng. Vậy tại sao mình lại nói các bạn lập trình viên nên sử hệ điều hành này? Vâng, ở trong bài viết này mình sẽ chỉ ra cho bạn 5 lý do mà mình thấy là hợp lý nhất để các bạn chuyển sang sử dụng nền tảng này, các bạn có thể bổ sung thêm dưới phần comment về góc nhìn của bạn nhé! 1. Không phù hợp để chơi game ! Mình tin chắc là sẽ có nhiều bạn nghĩ lý do này là không thuyết phục, vì chuyện chơi game sẽ phụ thuộc vào sở thích cũng như lý trí mỗi người. Mình không hề phủ nhận điều đó, nhưng một trong những cách để bạn tập trung hơn vào công việc đó là đừng bắt bản thân phải đưa ra lựa chọn. OK ! Ví dụ như khi bạn bạn đang xài hệ điều hành Windows và máy bạn có cài sẵn một số tựa game. Điều này khiến bạn nhiều lúc phải đưa ra lựa chọn giữa làm việc và chơi game để giải trí một lúc. Tất nhiên rồi, sẽ có lúc bạn không thể cưỡng lại được sự lôi cuốn của mấy con game mình thích, và thế là bạn lại lao vào chơi game mà quên béng đi mất mình đang phải làm việc. Mình đã từng trong tình trạng này rồi nên mình hiểu rất rõ cảm giác việc phải đưa ra lựa chọn như thế. Về lâu về dài nó sẽ không tốt cho việc hình thành thói quen của bạn. Đấy là với các bạn làm chủ bản thân kém, còn với các bạn học ra học, chơi ra chơi thì đây có lẽ không phải là một lý do thuyết phục thật. 2. Linux hoàn toàn miễn phí và Open Source Windows hay Mac OS đều là những hệ điều trả phí. Và tất nhiên, bạn sẽ phải trả một khoản tiền không hề nhỏ so với thu nhập bình quân đầu người ở Việt Nam để có thể sở hữu bản quyền CHÍNH THỨC. Mặc dù ở Việt Nam vấn đề bản quyền chưa được đề cao nên số lượng người sử dụng bản quyền lậu vẫn rất nhiều, đặc biệt là với hệ điều hành Windows. Nhưng mình thấy mấy năm trở lại đây chúng ta đã đỡ hơn rất nhiều rồi. Còn ở nước ngoài thì khác, nơi mà vấn đề bản quyền được đề cao thì việc dùng lậu sẽ mang đến rất nhiều rủi ro cho người dùng. Chúng ta dần dần cũng vậy thôi, chắc chắn là như vậy ! Trong khi đó, lập trình viên lại là những người làm việc thường xuyên với máy tính và hệ điều hành. Ai sẽ là người chịu trách nhiệm khi mà hệ điều hành bạn dùng bị lỗi trong khi bạn đang dùng các phiên bản các phiên bản bẻ khóa… Đây chính là lý do tại sao khi bạn hỏi các lập trình viên ở các nước phương tây, họ dùng Linux rất nhiều ! Linux là hệ điều hành mã nguồn mở, hoàn toàn miễn phí và open source. Có nghĩa là bạn không cần phải trả phí để mua bản quyền, mà chỉ cần tải về, cài đặt và dùng thôi. Vậy một câu hỏi đặt ra là nhỡ có bị lỗi thì ai là người đứng ra chịu trách nhiệm? Vâng, thực ra là Linux được cả cộng đồng xây dựng chung nên rất ít lỗi và nếu có lỗi thì cộng đồng Linux cũng rất đông và sẽ giúp đỡ bạn thôi. Tham khảo khóa học lập trình web 6 tháng, đảm bảo 100% công việc đầu ra! Nguồn Bài viết được sự cho phép của tác giả Kiên Nguyễn Chào các bạn, như các bạn đều đã biết, hiện nay có 3 hệ điều hành phổ biến nhất cho máy tính đó là Windows, macOS và Linux. Mỗi hệ điều hành thì lại có những ưu và nhược điểm riêng, phù hợp với các tác vụ nhất định. Windows có lẽ là một hệ điều hành đã quá quen thuộc với người dùng phổ thông rồi, và macOS cũng vậy vì đã xài Macbook thì mặc định sẽ là macOS mà – tuy nhiên mức độ phổ biến thì không thể bằng Windows được. Còn với Linux và các phiên bản phát triển từ nhân Linux như Ubuntu, Kali Linux, Pop!_OS… thì không phải ai cũng lựa chọn để dùng và biết cách để dùng. Vậy tại sao mình lại nói các bạn lập trình viên nên sử hệ điều hành này? Vâng, ở trong bài viết này mình sẽ chỉ ra cho bạn 5 lý do mà mình thấy là hợp lý nhất để các bạn chuyển sang sử dụng nền tảng này, các bạn có thể bổ sung thêm dưới phần comment về góc nhìn của bạn nhé 🙂 1. Không phù hợp để chơi game ! Mình tin chắc là sẽ có nhiều bạn nghĩ lý do này là không thuyết phục, vì chuyện chơi game sẽ phụ thuộc vào sở thích cũng như lý trí mỗi người. Mình không hề phủ nhận điều đó, nhưng một trong những cách để bạn tập trung hơn vào công việc đó là đừng bắt bản thân phải đưa ra lựa chọn. OK ! Ví dụ như khi bạn bạn đang xài hệ điều hành Windows và máy bạn có cài sẵn một số tựa game. Điều này khiến bạn nhiều lúc phải đưa ra lựa chọn giữa làm việc và chơi game để giải trí một lúc. Tất nhiên rồi, sẽ có lúc bạn không thể cưỡng lại được sự lôi cuốn của mấy con game mình thích, và thế là bạn lại lao vào chơi game mà quên béng đi mất mình đang phải làm việc. Mình đã từng trong tình trạng này rồi nên mình hiểu rất rõ cảm giác việc phải đưa ra lựa chọn như thế. Về lâu về dài nó sẽ không tốt cho việc hình thành thói quen của bạn. Đấy là với các bạn làm chủ bản thân kém, còn với các bạn học ra học, chơi ra chơi thì đây có lẽ không phải là một lý do thuyết phục thật. 2. Linux hoàn toàn miễn phí và Open Source Windows hay Mac OS đều là những hệ điều trả phí. Và tất nhiên, bạn sẽ phải trả một khoản tiền không hề nhỏ so với thu nhập bình quân đầu người ở Việt Nam để có thể sở hữu bản quyền CHÍNH THỨC. Mặc dù ở Việt Nam vấn đề bản quyền chưa được đề cao nên số lượng người sử dụng bản quyền lậu vẫn rất nhiều, đặc biệt là với hệ điều hành Windows. Nhưng mình thấy mấy năm trở lại đây chúng ta đã đỡ hơn rất nhiều rồi. Còn ở nước ngoài thì khác, nơi mà vấn đề bản quyền được đề cao thì việc dùng lậu sẽ mang đến rất nhiều rủi ro cho người dùng. Chúng ta dần dần cũng vậy thôi, chắc chắn là như vậy ! Trong khi đó, lập trình viên lại là những người làm việc thường xuyên với máy tính và hệ điều hành. Ai sẽ là người chịu trách nhiệm khi mà hệ điều hành bạn dùng bị lỗi trong khi bạn đang dùng các phiên bản các phiên bản bẻ khóa… Đây chính là lý do tại sao khi bạn hỏi các lập trình viên ở các nước phương tây, họ dùng Linux rất nhiều ! Linux là hệ điều hành mã nguồn mở, hoàn toàn miễn phí và open source. Có nghĩa là bạn không cần phải trả phí để mua bản quyền, mà chỉ cần tải về, cài đặt và dùng thôi. Vậy một câu hỏi đặt ra là nhỡ có bị lỗi thì ai là người đứng ra chịu trách nhiệm? Vâng, thực ra là Linux được cả cộng đồng xây dựng chung nên rất ít lỗi và nếu có lỗi thì cộng đồng Linux cũng rất đông và sẽ giúp đỡ bạn thôi. Đã là lập trình viên thì phần lớn thời gian họ làm việc với các ngôn ngữ lập trình, mà Linux và các phiên bản của Linux thì lại hỗ trợ hầu hết các ngôn ngữ lập trình C/C++, Java, Python, PHP… Không những vậy, việc thao tác dòng lệnh command line trên Linux phải gọi là rất sướng, sướng hơn Windows rất nhiều. Các bạn có thể cài đặt mọi thứ, từ ngôn ngữ lập trình cho đến các IDE, tools bằng cách gõ các dòng lệnh. Cảm giác mình sử dụng máy tính ở một cái tầm khác. Nhiều bạn lập trình viên có tần suất dùng chuột rất ít 🙂 do là đã quá quen với việc thao tác với dòng lệnh rồi. Tất nhiên khi bạn dùng quen rồi thì bạn cũng có khả năng làm được như vậy thôi. Hơn nữa, hiện nay hầu hết các ngôn ngữ lập trình đều hỗ trợ CLI Command Line Interface nên khi bạn dùng Linux, bạn chỉ cần gõ lệnh là hầu như làm được hết mọi thứ. 4. Tính bảo mật cao Trước khi nói về tính bảo mật của Linux thì mình sẽ nói về tính bảo mật của Windows trước. Các bạn vẫn thường nghe về các lần vá lỗi bảo mật hoặc là thông báo lỗ hổng bảo mật trên Windows rất nhiều, đúng chứ. Đó là khi bạn dùng bản Windows sạch, còn nếu bạn dùng các phiên bản phiên bản lậu thì nguy cơ bị đe dọa bảo mật lại càng nghiêm trọng hơn nữa. Nhiều bạn cẩn thận, máy có nhiều tài liệu quan trọng sẽ còn phát sinh thêm chi phí mua thêm các phần mềm diệt virus. Nhưng trên Linux thì không, Linux được cả cộng đồng đông đảo chung tay phát triển. Tất nhiên, mình không khẳng định Linux không có lỗi, nhưng nếu xét về tính bảo mật và an toàn thì mình vẫn đánh giá cao Linux hơn. Vậy tại sao Linux lại bảo mật hơn Windows? + Quyền “root” Gọi nôm na là quyền Admin đấy các bạn. Bình thường khi bạn cài Windows thì mặc định bạn sẽ có quyền này, nó cho phép bạn thực hiện mọi thao tác với hệ thống với quyền hạn cao nhất. Nhưng trên Linux thì không, người dùng không được cấp quyền này theo mặc định. Nói cách khác thì dù có bị virus xâm nhập thì cũng không có quyền root để mà phá hoại hệ thống. + Ít bị dòm ngó bởi các hacker Vâng, dễ hiểu thôi, mình lấy ngay ví dụ bên trên nhé 🙂 giả dụ như có cài virus vào được rồi mà không làm gì được thì đương nhiên hacker sẽ tìm những nạn nhân khác dễ nuốt hơn. Mà khi ngoài tầm ngắm rồi thì càng ít bị tấn công, vậy nên vấn đề bảo mật càng ít bị đe dọa. Còn nhiều nguyên nhân khác nữa, nhưng theo mình thấy đây là hai nguyên nhân tiêu biểu cũng như là dễ thấy nhất. 5. Khả năng tùy biến cực cao Như mình đã nói ở trên, Linux miễn phí 100%, có nghĩa là bạn có thể tùy chỉnh mọi thứ từ font chữ, theme, icon… bạn có thể tùy biến rất sâu vào hệ thống, tùy theo ý của bạn. Thậm chí nhiều phiên bản hệ điều hành còn được xây dựng trên nền tảng các hệ điều hành Linux có sẵn. Khi bạn sử dụng Linux nó sẽ đem lại cho bạn một cảm giác gọi là cảm giác “được kiểm soát”. Nói nôm na là bạn muốn làm gì thì làm, điều này không giống với Windows hay Mac OS vì hai hệ điều hành này còn liên quan tới vấn đề bản quyền nữa. Mà các bạn lập trình nếu làm việc can thiệp sâu vào hệ thống, tới tầng hệ điều hành thì điều này lại cực kỳ quan trọng hơn nữa, do phải hiểu thì mới làm được, mới xây dựng sản phẩm trên hệ điều hành đó được. 6. Lời Kết Như vậy là trong trong bài viết này mình đã cùng với các bạn điểm qua 5 lý do rất thuyết phục để những bạn đang hoặc sẽ là lập trình viên thì nên sử dụng hệ điều hành Linux rồi nhé. Có thể đúng nhưng chưa đủ, vậy nên rất mong được các bạn đóng góp thêm ý kiến mới, cũng như là đưa ra góc nhìn của bạn về vấn đề này để anh em cùng trao đổi thêm. Cám ơn các bạn trước nhé 🙂 CTV Nguyễn Đức Cảnh – Bài viết gốc được đăng tải tại Có thể bạn quan tâm Sự khác biệt giữa Windows và Linux – Cuộc chiến khốc liệt Giải mã bí ẩn “system load” trên Linux Freelancer IT là gì? Những điều thú vị về Freelancer lập trình Xem thêm Việc làm Developer hấp dẫn trên TopDev

he dieu hanh java