Skip to main content

Main Algorithms of a Linux Kernel

Signals

  • Signals are one of the oldest facilities of Inter Process Communication.
  • Signals are used to inform the processes about the events.
  • signals will be sent via the following function (by the Kernel)

int send_sig_info(int sig, struct siginfo *info, struct task_struct *);

sig – refers the signal number

info – refers the sender

t – refers to the tasks (the kernel may send signals to many processes)

Booting the System

There are many bootloaders available for linux, the common ones being the LILO and the GRUB loader

LILO – LInux LOader

GRUB – GRand unified Bootloader

The steps while booting the kernel (only relevant steps are given)

  • Entry point at start which is available at arch/x86/boot/setup.S (This is responsible for initializing the hardware (assembler code)
  • Once the hardware is initialized, the process is switched to protected mode by setting a bit word in the machine status word.
  • Next the assembler instruction,       jmpi 0×100000 _KERNEL_CS, jumps to the start address of the 32 bit code of the actual operating system kernel and continues from startup_32 and in the file arch/x86/kernel/head.S . More sections of the hardwares are initialized here like Memory Management unit (Page tables), the Co processor, and the environment (stack, environment,etc)
  • The first C function start_kernel() from init/main.c is called
  • the following list the assembly linkage of the start_kernel function

asmlinkage void __init start_kernel(void)

{

char * command_line;

printk(linux_banner); //print kernel, the banner

setup_arch(&command_line);//architecture dependent codes relevant to x86

trap_init();

init_IRQ(); //hardware interrupt initialization

sched_init(); //initialize the schedules

time_init();

softirq_init(); //soft interrupts

console_init();//initialize the console

init_modules();//initialize the modules (device drivers)

…..}

  • the init is called (will be searched in /sbin/init or /etc/init or /bin/init). if the init is not available, then a shell (/bin/bash) will be opened for debugging

Hardware  interrupts (IRQ)

Interrupts are used to allow the hardware to communicate with the operating system, there are two problems while writing interrupt routine,

  • firstly, The interrupt routines should serve the hardware as quickly as possible
  • secondly, large amount is to be handled by the interrupt routine

This can be solved by the following mechanisms

  • disabling all the software interrupts while servicing the hardware interrupts.
  • the processing of data is carried out asynchronously by the software interrupts through “tasklets ” or “bottom halves”

Software Interrupts

  • It is like a hardware interrupt but can be started only at certain times
  • The number of interrupts is limited
  • enum {HI_SOFTIRQ, NET_TX_SOFTIRQ, NET_RX_SOFTIRQ,TASKLET_SOFTIRQ}; the date types tells the software interrupts for hi priority software interrupts, Network Tranmssion and Receiving Interrupt and tasklet interrupt). upon interrupt is generated, the Interrupt routine will be executed

Comments

Popular posts from this blog

Implementing a new system call in Kernel version 2.6.32

A system call is used by application or user programs to request service from the operating systems. Since the user programs does not have direct access to the kernel whereas the OS has the direct access. OS can access the hardware through system calls only. The following files has to be modified for implementing a system call /usr/src/linux-2.6.32.5/arch/x86/kernel/syscall_table_32.S /usr/src/linux-2.6.32.5/arch/x86/include/asm/unistd_32.h /usr/src/linux-2.6.32.5/include/linux/syscalls.h /usr/src/linux-2.6.32.5/Makefile New set of files to be created Create a new directory newcall/ inside the path “ /usr/src/linux-2.6.32.5/ ” Create new files Makefile, newcall.c and put them in the /usr/src/linux-2.6.32.5/newcall/ folder Create new user files (in any folder of Linux) to test the system call testnewcall.c, testnewcall.h (created in /home/pradeepkumar ) syscall_table_32.S Find the file /usr/src/linux-2.6.32.5/arch/x86/kernel/syscall_tab

How to Access MOODLE in Intranet and Internet

When Moodle is accessed either in Intranet or internet, there will not be any issue. But occasions when the MOODLE Site has to be accessed both in the intranet and in the Internet, here is a simple trick Server Used: IBM Blade Servers Operating system: Windows Server 2008 Moodle Version: 2.4 WAMP Server is used. Number of Users: 3000 (Students) + 200 (Faculty) Open the config.php from ~/moodle/config.php include these lines $CFG->wwwroot = 'http://'.$server_id.'/vitcc'; $CFG->dataroot  = 'C:\\wamp\\moodledata'; before the following line $CFG->directorypermissions = 07xx; Restart the WAMP Server and you can Check MOODLE Site both in Internet and Intranet. The above Image tells the intranet Link and the internet link can be opened outside the campus network

Electrical Machine Design (equations)

Factors DC Machine Transformers Induction Machines Synchronous Machines Output Equation P a =C o D 2 Ln, where Pa=P/h for generators, Pa=P for motors For Single Phase Q=2.22 f B m A i K w A w d 10 -3 For Three Phase Q=3.33 f B m A i K w A w d 10 -3 Q=C o D 2 L n s KVA Input Q= HP * 0.746 / Cos f * h Q=C o D 2 L n s KVA Input Q= HP * 0.746 / Cos f * h For Turbo alternators Q=1.11B av ac K ws V a 2 L 10 -3 /n s Output Coefficient C o =B av ac* 10 -3 where Bav-magnetic loading and ac - electric loading DNA C o =11 K ws B av ac 10 -3 C o =11 K ws B av ac 10 -3 Choice of Magnetic Loading Flux Density in Teeth Frequency of Flux Reversals Size of machine DNA Magnetizing current, Flux Density, Iron loss Iron loss, Stability, Voltage Rating, Parallel Operation, Transient ShortCircuit current