How kernel provides services to other parts of operating system? - operating-system

I went through the definitions of kernel on internet and i saw in many definitions that kernel provides services to other parts of OS.
What do they mean by kernel provides services to other parts of OS.
Can anyone explain with some valid example.
Thanks in advance.

kernel provides services to other parts of OS.
By "others" they mean parts of OS which works in user space (non-priveledged code). Among them are:
Libraries, provided by OS and used by 3d party applications (or 3d-party libraries).
Frameworks, e.g. one provided windows subsystem.
Applications (executables) provided by OS itself. E.g. cd command.
If any of those component needs a help from the kernel, it uses one of the kernel's service. Usually, kernel's service is provided via syscall mechanism.

Related

How do I develop an UEFI application using the network packages?

I see GNU EFI is a tool chain to compile applications, but it doesn't seem to come with many libraries.
Tianocore EDK2 comes with a lot of code, with modules and drivers that I'm still figuring out. By default, it builds a full firmware image that I use as a BIOS.
What I need to do is, develop a network-capable application that will query a server for boot instructions, and then prepare the next steps. The idea is to control the boot process from the management server, so the client should be able to follow the instructions to boot from TFTP, or from local storage, or update local storage etc.
You have two main options for writing UEFI network applications.
Managed Network Protocol has the firmware trying to autoconfigure your network and download files as appropriate via TFTP/PXE or HTTPS.
Simple Network Protocol gives you raw access to a packet interface if you want to handle things yourself.

What is the difference between standalone and desktop application?

I searched it a lot, I found everyone saying that standalone application does not require operating system services but how a software can function without using operating system services. Like if you take NetBeans , even the platform independent version of NetBeans ultimately takes the operating system services in backend.
Moreover if we talk about notepad, is it a standalone or desktop application.
Is eclipse(an IDE) a standalone or desktop application.
Please help I am really confused
From the wikipedia article
A stand-alone program is a computer program that does not load any
external module, library function or program and that is designed to
boot with the bootstrap procedure of the target processor
So to answer your question about netbeans or notepad both of them definitely requires some OS intervention to run. In order to write your standalone application you will need to rewire a bunch of low level stuff including the loader. The nuisances involved are usually not worth the benefit they achieve in era of modern programming frameworks and ever growing faster hardware. The same wiki article mentions that standalone applications are almost extinct now
but how a software can function without using operating system services
Well to function, the software will just need to mimic some of the operating system services it requires. some device drivers do exactly that. Though the definition of standalone programs is itself fuzzy, some embedded softwares tend to fall in the category of the definition from the wiki page.

Operating System configuration parameters in ERP-CRM systems?

I'm searching for information about "Operating System configuration parameters in ERP, CRM systems: definition, types and use".
I can't figure out what these configuration parameters are, since I have searched in Spanish and English and I cannot find anything.
The only thing I could find was about:
Server connection
DB access
Language configuration
Country localization files
I've nothing to contrast this info, so I would appreciate if someone tells me what this term refers to, because these items don't seem like Operating System parameters to me. When I think about Operating System parameters, I think in PATH and similar stuff.
Though in general terms Operating System means
An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs. The operating system is a component of the system software in a computer system. Application programs usually require an operating system to function.
The actual definition in your context mostly refer to the Operating Environment
In computer software, an operating environment or integrated applications environment is the environment in which users run application software. The environment consists of a user interface provided by an applications manager and usually an application programming interface (API) to the applications manager.
An operating environment is usually not a full operating system but is
a form of middle-ware that rests between the OS and the application.
This is the reason you found the answers relating to
Server connection
DB access
Language configuration
Country localization files
Database Server
Server OS
and similar topics as that actually is the Operating environment in context of applications like CRM,ERP etc.
Hope that helps.

Any C API or Perl Module to get the system info?

I am looking for an API or perl module which collects the system architecute of different flavors of UNIX and Windows versons. Such as Unix Version, hardware, Number of CPU, Memory size etc. I am using SIGAR api to monitor the system resource, but it don't have any libraries that can collect system info. I am using perl bindings to call the SIGAR libraries.
The site you're looking for is http://search.cpan.org. There you can search for modules and browse their documentation to see which best suits your needs.

Simulating computer cluster on simple desktop to test parallel algorithms

I want to try and learn MPI as well as parallel programming.
Can a sandbox be created on my desktop PC?
How can this be done?
Linux and windows solutions are welcome.
If you want to learn MPI, you can definitely do it on a single PC (Most modern MPIs have shared memory based communication for local communication so you don't need additional configuration). So install a popular MPI (MPICH / OpenMPI) on a linux box and get going! If your programs are going to be CPU bound, I'd suggest only running job sizes that equal the number of processor cores on your machine.
Edit: Since you tagged it as a virtualization question, I wanted to add that you could also run MPI on multiple VMs (on VMPlayer or VirtualBox for example) and run your tests. This would need inter-vm networking to be configured (differs based on your virtualization software).
Whatever you choose (single PC vs VMs) it won't change the way you write your MPI programs. Since this is for learning MPI, I'd suggest going with the first approach (run multiple MPI programs on a single PC).
You don't need to have VMs running to launch multiple copies of your application that communicate using MPI .
MPI can help you a virtual cluster on a given single node by launching multiple copies of your applications.
One benifit though, of having it run in a VM is that (as you already mentioned) it provides sand boxing .Thus any issues if your application creates will remain limited to that VM which is running the app copy.