Hossam Blog

September 12, 2006

What Is Open Source?

Filed under: What Is — Hossam Ahmed @ 8:34 pm

For all people who used to make their programs Open Source. and read this word here.. 2 words should jump in their brain.

FREE Like FREEDOM

Yea.. this is the most advantage of using Open Source as technique in programming.

Programmers publish their projects && Work For Free, Here Free does not mean working hard and for nothing.. NOO.

They publish their projects in sourceforge.net “for example”

because ideas want to be free

and to make sure that the programs will survive, update, look gr8 ;)

Open source describes practices in production and development that promote access to the end product’s sources. Some consider it as a philosophy, and others consider it as a pragmatic methodology. Before open source became widely adopted, developers and producers used a variety of phrases to describe the concept; the term open source gained popularity with the rise of the Internet and its enabling of diverse production models, communication paths, and interactive communities.

  • open source software became the most prominent face of open source.The open source model can allow for the concurrent use of different agendas and approaches in production, in contrast with more centralized models of development such as those typically used in commercial software companies
  • Open source hardware — hardware whose initial specification, usually in a software format, are published and made available to the public, enabling anyone to copy, modify and redistribute the hardware and source code without paying royalties or fees. Open source hardware evolves through community cooperation. These communities are composed of individual hardware/software developers, hobbyists, as well as very large companies. Examples of Open Source Hardware initiatives are:
    • Sun Microsystem’s OpenSPARC T1 Multicore processor. Sun states in their Press release: “The source code will be released under an Open Source Initiative (OSI)-approved open source license.”
    • Arduino, a microcontroller platform for hobbyists, artists and designers.

u will find a lot of products are using Open Source technique like

  • LAMP
  • Linux Tux Logo
  • Apache Apache Logo
  • MySQL MySQL Logo
  • PHP PHP LogoPerl Perl LogoPython Python Logo
  • OpenOffice.orgOpenOffice Logo

What Is the different between x64 and x86

Filed under: What Is — Hossam Ahmed @ 7:52 pm

well, x86 and x64 are approaches in how Processor work.

but the Main Difference is The Processor Registers.

(more…)

What Is Kernel?

Filed under: What Is — Hossam Ahmed @ 7:19 pm

What is Kernel?
this is a great question.. and for who dunn know what is Kernel or never heard about this word.
Kernel is the Heart of most Computer Operating Systems.
it’s job managing System’s resources and communications between hardware and software.

Kernel’s Tasks:
The kernel’s task is to manage the computer’s resources and allow other programs to run and use these resources.
in a computers, the most central part is the Central Process Unit “CPU or Processor”, which actually runs different programs the way and for the amount of time dictated by the kernel

there are many different kernel design approaches like:

  • Monolithic Kernels.
  • MicroKernels.
  • Hybrid Kernels.
  • NanoKernels
  • ExoKernels

Kernel Development Overview:
Kernel development is considered one of the most complex and difficult tasks in programming.

Its central position in an operating system implies the necessity for good performance, which defines the kernel as a critical piece of software and makes its correct design and implementation difficult.

A kernel might even not be allowed to use the abstraction mechanisms it provides to other software. Many reasons prevent a kernel from using facilities it provides, such as:

  • interrupt management
  • memory management
  • and lack of reentrancy, thus making its development even more difficult for software engineers.

Kernel Development under:

  • Time-Sharing Operating Systems.
  • Unix.
  • MAC OS.
  • Windows.

Process Management:

The main task of an operating system kernel is to allow the execution of applications and support them with features such as hardware abstractions. To run an application, a kernel must load the file containing the code for the application to memory (and eventually set up its own address space), set up a stack for the program and branch to a given location inside the program, thus starting its execution.

Multi-tasking kernels are able to give the user the illusion that the number of processes being run simultaneously on the computer is higher than the maximum number of processes the computer is physically able to run simultaneously. Typically, the number of processes a system may run simultaneously is equal to the number of CPUs installed

The operating system might also support multiprocessors, in that case different programs and threads may run on different processors. To allow a kernel to run on such a system, it has to be extensively modified to make it “re-entrant” or “interruptible”, meaning that it can be called in the midst of doing something else. Once this conversion is complete, programs running at the same time on different processors can safely call the kernel. The kernel must also provide a way to synchronize memory access on different processors, which makes memory management and process management two highly inter-related topics

Memory Management:

The kernel has full access to the system’s memory and must allow userland programs to access this memory safely as they require it. Often the first step in doing this is virtual addressing, usually achieved by paging and/or segmentation. Virtual addressing allows the kernel to make a given physical address appear to be another address, the virtual address. This allows every program to believe that it is the only one (apart from the kernel) running and thus prevents applications from crashing each other.[citation needed] In fact, a program’s virtual address may even refer to data which is not currently in memory. The layer of indirection provided by virtual addressing allows the operating system to use other data stores, like a hard drive, to store what would otherwise have to remain in main memory (RAM). As a result, operating systems can allow programs to use more memory than the system has physically available. When a program needs data which is not currently in RAM, the OS writes the contents of a currently unused memory block to disk and replaces it with the data requested by the program.[citation needed] Virtual addressing also allows creation of virtual partitions of memory in two disjointed areas, one being reserved for the kernel (kernel space) and the other for the applications (user space). This fundamental partition of memory space has contributed much to current designs of actual generalistic kernels.

Device Management:

To perform, an operating system (OS) needs access to the peripherals connected to the computer, which are controlled through device drivers, which must be written by the developers and/or be provided by the manufacturers of the hardware. For example, to show the user something on the screen, the kernel relies on its monitor driver (such as VGA or VESA) which is then responsible for actually plotting the character/pixel.[citation needed] A device manager first performs a scan on different hardware buses, such as Peripheral Component Interconnect (PCI) or Universal Serial Bus (USB), to detect installed devices, then searches for the appropriate drivers. As device management is a very OS-specific topic, these drivers are handled differently by each kind of kernel design, but in every case, the kernel has to provide the I/O to allow drivers to physically access their devices through some port or memory location. Very important decisions have to be made when designing the device management system, as every access involves context switches, making the operation very CPU-intensive and easily causing a significant performance overhead.

System Calls:

To actually perform useful work, a userland program must be able to access the services provided by the kernel. This is implemented differently by each kernel, but most provide a C library or an API, which in turn invoke the related kernel functions either through the inter-process communication system, software interrupts or shared memory.

What Is PC?

Filed under: What Is — Hossam Ahmed @ 4:36 pm

PC Is a personal computer which usually a microcomputer whose price, size, and capabilities make it suitable for personal usage.The term was popularized by Apple Computer with the Apple II in the late-1970s and early-1980s, and afterwards by IBM with the IBM PC.

History:

  • Mainframes and large minicomputers .
  • Computers @ Home.
  • Business Computers.
  • Notebook “Laptop”.

Computer Categories:

Personal computers can be categorized by size and portability:

  • Desktop computers
  • Laptop or notebooks
  • Personal digital assistants (PDAs)
  • Portable computers
  • Tablet computers
  • Wearable computers

PC Consists of:

  • Motherboard
  • Central processing unit “Processor”
  • Main memory
  • Mass storage
  • Graphics – Video card

Who use PC?

Personal computers are normally operated by one user at a time to perform such general purpose tasks as word processing, internet browsing, internet faxing, emailing and other digital messaging, multimedia playback, video game play, computer programming etc.

The user of a modern personal computer may have significant knowledge of the operating environment and application programs, but is not necessarily interested in programming nor even able to write programs for the computer. Therefore, most software written primarily for personal computers tends to be designed with simplicity of use, or “user-friendliness” in mind. However, the software industry continuously provide a wide range of new products for use in personal computers, targeted at both the expert and the non-expert user.

Today:

During the 1990s, the power of personal computers increased radically, blurring the formerly sharp distinction between personal computers and multi-user computers, such as mainframes. Today higher-end computers often distinguish themselves from personal computers by greater reliability or greater ability to multitask, rather than by brute CPU ability.

In today’s common usage, personal computer and PC usually indicate an IBM PC compatible. Due to this association, some manufacturers of personal computers that are not IBM PCs avoid explicitly using the terms to describe their products. Mostly, the term PC is used to describe personal computers that use Microsoft Windows operating systems.

Hello world!

Filed under: Uncategorized — Hossam Ahmed @ 11:11 am

Hello Mates,

Welcome to my Blog @ WordPress.com. This is my first post.

i choosed the name “Hello world!” because it is the name of every program i create while learning a new programming language.. i used to use this words as much as we learn from professors in my faculty.. or in all books..

Thanks.. and have a good time :)

Blog at WordPress.com.