Sysetm programs are located between application program and OS.
System programs categories
File Management
- create , delete copy rename , print ,dump , List , and generally manipulate files and directories.
Status information
- Date, Time , Amount of available memory or disk space , number of users , detailed performance , logging and debugging information
File modification
- Several text editors may be available to create and modify the content of files stored on disk or other storage devices , and search operation.
Programming-language support = compilers, assemblers , debuggers and interpreters
Progam loading and execution = Absolute loaders , Relocatable loaders , Linkage editors and Overlay loaders
Communications
- creating virutal connections among processes, users , and computer systems
- allowing users to send messages to one another's screens
- to browse webpages , send email , log in or transfer files from one machine to another
OS Design
Requirement diff from user goals to system goals
Mechanisms = determine how to do something
Policies = determine what will be done
One important principle is the seperation of policy from mechanism.
way to allocating resource to process = mechanisms , should always remain same
whether certain resource actually will be allocate to process = policies , change of polices should not affect of mechanisms.
Structures of OS
All the layer can access to Hardward. interface and levels of functionality is not well seperated.
if Application Programs go wrong entire system might crash.
too many things are packed in single layer which makes diffcult to modify or adjust.
now many functionality are divided into many layers. designing and deciding will be very difficult.
system call from user interface takes too many layer to go through and some parameter might be affected
unlike monolithic kernel doesn't have so many functionality. reimplemented others with user mode or system program.
message passing = way to client program communciate with Deveice drivers ~ Virtual Memory
if Client want to access hardware resource it doens't need to shift to kernel mode it can just communciate with "Right" services.
even Client crash System won't fail.
micro kernel can have performance issue due to system function overhead because message passing , it has to happen all the time
Just like Object Oritented Progamming everything is made of module and dynamically loaded to kernel when needed.
each of layer have protected interfaces.
unlike layer mode any module can call any other module it doesn't need to go through every layer between.
unlike micro kernel we need "message passing" , but Module mode doesn't need message passing.