Advertisement Updated by Bertel King, Jr. on June 22nd 2017 You’ve made the switch from Windows or Mac OS X, and now you’re looking for applications to install. Or maybe you’re a long-time Linux user who’s keeping an eye out for what’s new. Either way, you’ve come to the right place. You’ve already picked a Linux distro and have settled on a desktop environment. Most of the software below is free and open source. A few require you to download an installer from a website. Browsers Firefox Firefox has lost market share over the years, but it remains the best fully open source browser around. Chrome/Chromium By some measures, Chrome is now the king of the hill. Opera Opera isn’t open source, but it is free. Web (Epiphany) Browser There aren’t many browsers developed explicitly for Linux. QupZilla None of the above browsers look quite at home on the KDE Plasma desktop. Email Thunderbird Thunderbird is the email client from Mozilla. Geary Evolution KMail Claws Mail Instant Messaging Pidgin Empathy WPS Office
TestMy.net Broadband Internet Speed TestProcess Management | Process Descriptor and the Task StructureThis chapter is from the book Threads of execution, often shortened to threads, are the objects of activity within the process. Each thread includes a unique program counter, process stack, and set of processor registers. The kernel schedules individual threads, not processes. In traditional Unix systems, each process consists of one thread. In modern systems, however, multithreaded programs—those that consist of more than one thread—are common. On modern operating systems, processes provide two virtualizations: a virtualized processor and virtual memory. A program itself is not a process; a process is an active program and related resources. A process begins its life when, not surprisingly, it is created. Often, immediately after a fork it is desirable to execute a new, different, program. Another name for a process is a task. Allocating the Process Descriptor The new structure also makes it rather easy to calculate offsets of its values for use in assembly code. Process State
ASCII Art—Holidays and Events—New Year's EveMore ASCII HolidaysMore ASCII ArtMain PageHow the Kernel Manages Your MemoryAfter examining the virtual address layout of a process, we turn to the kernel and its mechanisms for managing user memory. Here is gonzo again: Linux processes are implemented in the kernel as instances of task_struct, the process descriptor. The mm field in task_struct points to the memory descriptor, mm_struct, which is an executive summary of a program’s memory. It stores the start and end of memory segments as shown above, the number of physical memory pages used by the process (rss stands for Resident Set Size), the amount of virtual address space used, and other tidbits. Within the memory descriptor we also find the two work horses for managing program memory: the set of virtual memory areas and the page tables. Each virtual memory area (VMA) is a contiguous range of virtual addresses; these areas never overlap. In Windows, the EPROCESS block is roughly a mix of task_struct and mm_struct. Linux has functions to read and set each flag in a PTE. Things could have been different.
Ludus Novus | The Art of InteractionThe Linux Documentation Project: GuidesThe Linux Documentation Project (LDP) is working on developing good, reliable documentation for the Linux operating system. The overall goal of the LDP is to collaborate in taking care of all of the issues of Linux documentation, ranging from online documentation (man pages, HTML, and so on) to printed manuals covering topics such as installing, using, and running Linux. Here is the Linux Documentation Project Manifesto and Copyright License for LDP works. Translations of LDP works (languages other than English) can be found on the "Non-English Linux Info" links page. Advanced Bash-Scripting Guide This document is both a tutorial and a reference on shell scripting with Bash. It assumes no previous knowledge of scripting or programming, but progresses rapidly toward an intermediate/advanced level of instruction . . . all the while sneaking in little nuggets of UNIX® wisdom and lore. Below is a table of translated guides that are available from pub/Linux/docs/ldp-archived/.
Chrome, Firefox, Safari, Opera, Edge? Impressive Web Browser AlternativesIt’s 2015 and your choice of browser has proven to be as important as your choice of operating system. Dedicated apps may be competing against browsers on mobile devices, but that is hardly the case in the desktop environment. On the contrary, each year more desktop browsers appear, and some of them can change the way you browse the Internet for the better. Google Chrome, Mozilla Firefox, Internet Explorer, Safari and Opera dominate the world’s desktop browser market. Whichever statistics you check (NetMarketshare1, StatCounter’s GlobalStats2 or W3Counter3), you’ll notice that they often contradict each other in declaring which browser is leading the race. Meet the “alternative browsers” — an unofficial term for all browsers other than the Big Five. Keep in mind how often the Chromium engine is updated. So, since alternative browsers are basically tweaked copies of bigger browsers, does that mean they are bad tools for productive web browsing? The Browsers Link UC Browser Link Torch Link
Device Driver BasicsThe HyperNews Linux KHG Discussion Pages Device Driver Basics We will assume that you decide that you do not wish to write a user-space device, and would rather implement your device in the kernel. You will probably be writing writing two files, a .c file and a .h file, and possibly modifying other files as well, as will be described below. We will refer to your files as foo.c and foo.h, and your driver will be the foo driver. Namespace One of the first things you will need to do, before writing any code, is to name your device. Allocating memory Memory allocation in the kernel is a little different from memory allocation in normal user-level programs. Memory is provided in pieces whose size is a power of 2, except that pieces larger than 128 bytes are allocated in blocks whose size is a power of 2 minus some small amount for overhead. To free memory allocated with kmalloc(), use one of two functions: kfree() or kfree_s(). Be gentle when you use kmalloc. Character vs. block devices The VFS