Skip to main content

Kernel Data Structures

Task Structure

The fundamental entity of any operating system is the task or a process. The task structure is defined in the linux/sched.h and it is the important data structure and following are some of its parameters.
struct task_struct {
volatile long state; //determines the current state of the process like unrunnable, runnable and stopped
unsigned long flags; // various flags for accounting purpose like PF_STARTIN, PF_MEMALLOC

unsigned long ptrace; // process is being monitored by other process.

int sigpending; //define when the signals must be handed over to this process

mm_segment_t addr_limit;

struct exec_domain *exec_domain; //domain other than x86

long need_resched; //flag indicates that scheduling must be executed

int lock_depth; //structure is protected before simulataneous access can take place

long counter; //dynamic priority of a process

long nice; //static priority of a process

unsigned long policy; //scheduling policy like SCHED_RR, SCHED_FIFO, SCHED_OTHER

unsigned long rt_priority;
.
};

Process Relations

This data structure describes the relation between processes lilke child process, parent process, etc.
struct task_struct *p_opptr; //original parent process
struct task_struct *p_pptr; //Parent Process
struct task_struct *p_cptr; //child process
struct task_struct *p_ysptr; //youngest sibling process
struct task_struct *p_osptr; //old sibling process
the following diagram depicts the relationship between the process.

Process ID

Every process has its own process ID called pid defined as follows:
pid_t pid, pgrp, session, tgid; //pgrp – process group, session in which the process runs and tgid is thread group id

int leader; //there will be a leader process among the process

apart from the above, there are two other parameters like uid and gid referred namely as user identification and group identification, which enables to create the access right.

Timing

Times are measured in ticks. usually the timing signals are generated by the hardware timer every10ms which is captured by the timer interrupt.
there are different timing parameters are specified like
long per_cpu_utime[NO OF CPUS]; //user mode
long per_cpu_stime[NO OF CPUS]; //system mode
struct tms times; //the timing values are added for all the child processes and other processes
unsigned long start_time; //time at which the process was generated.

FILES and INODES

Files and inodes represent the file structures.
Files defines the attributes of file like mode of operation, position of the cursor, flags, reference count, directory entry, etc
inodes defines the information about the files like owner of the file, device in which the file is located, access rights of the file, size of the file, last access time, last modification time, etc
struct file {
mode_t f_mode; // mode of operation like read, write, append, etc
loff_t f_pos; //position of the read/write cursor
atomic_t f_count; //reference count like how many times the file has been opened by the system call
unsigned int f_flags; //access control
struct dentry *fs_dentry;// file descriptor
.
};
struct inode {
kdev_t i_dev:// device id in which the file is located
unsigned long i_ino;//file within device
umode_t i_mode; //mode of operation
uid_t i_uid; //user id which is the owner of the file
gid_t i_gid; //group id, the file can be accessed by a group
off_t i_size; //size of the file in bytes
time_t i_mtime; //last modification time
time_t i_atime; //last accessed time
.
};

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