x86 Interrupts and system calls


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers x86 Interrupts and system calls
# 8  
Old 03-13-2012
Quote:
Originally Posted by ab_tall
If the dispatch table is indexed via the system call no, this would seem to indicate there are a huge no. of entries in the dispatch table
Please define "huge".
Quote:
but this doesnt seem to be the case right?
That is subjective. Please provide the number you found and explain what makes you think the dispatch table isn't indexed by the system call number.
# 9  
Old 03-14-2012
Quote:
Originally Posted by ab_tall
One more clarification,
From what i understand, there are a limited number of exceptions made available. But the no. of system calls is quite high,
Looks like you are confusing system call nos. with exceptions...those are 2 very different things unless you tell us in detail what you mean.
Quote:
Originally Posted by ab_tall
If the dispatch table is indexed via the system call no. , this would seem to indicate there are a huge no. of entries in the dispatch table............but this doesnt seem to be the case right?
Yes the no. of rows in the dispatch table is equal to the no. of system calls that are defined but i dont see where you are coming from...
# 10  
Old 03-19-2012
@Shamrock

Yes infact, I believe I was getting confused between system calls and interrupts.

More specifically, where system call handling and exception handling meet, that is what portion of the system call handling is managed by exceptions and so on.

Could you tell me if the following diagram seems correct to you?

Linux system call È£Ãâ °úÁ¤ :: ³×À̹ö ºí·Î±×

This diagram concurs with my current understanding, but from the prev. posts in this thread seem to suggest that there isn't a separate dispatch table from the interrupt vector table...so what am I missing here?

Btw I was concerned about the system call no. as the total system call count exceeds the no. of interrupts provided by the x86 architecture so I was wondering how we indexed into the vector table (300 odd v/s 255 s/w interrupts)... Please feel free to correct me if I'm wrong.
# 11  
Old 03-19-2012
Quote:
Originally Posted by ab_tall
More specifically, where system call handling and exception handling meet, that is what portion of the system call handling is managed by exceptions and so on.
They don't meet outside the deprecated interrupt 0x80. System calls are always triggered by userland code, interrupts are generally triggered by the hardware.
Quote:
Could you tell me if the following diagram seems correct to you?

Linux system call È£Ãâ °úÁ¤ :: ³×À̹ö ºí·Î±×
The diagram is correct. in 0x80 is used to execute system call #2.
Quote:
Btw I was concerned about the system call no. as the total system call count exceeds the no. of interrupts provided by the x86 architecture so I was wondering how we indexed into the vector table (300 odd v/s 255 s/w interrupts)... Please feel free to correct me if I'm wrong.
These numbers are unrelated. A single interrupt, or better a single instruction, is sufficient to run an almost unlimited number of system calls.
# 12  
Old 03-19-2012
Quote:
Originally Posted by ab_tall
@Shamrock

Yes infact, I believe I was getting confused between system calls and interrupts.

More specifically, where system call handling and exception handling meet, that is what portion of the system call handling is managed by exceptions and so on.
System call handling is the second step of exception handling.
Quote:
Originally Posted by ab_tall
Could you tell me if the following diagram seems correct to you?

Linux system call È£Ãâ °úÁ¤ :: ³×À̹ö ºí·Î±×
Which book did you get this from...it is awesome and it shows exactly how system call handling occurs...and thanks for posting it.
Quote:
Originally Posted by ab_tall
This diagram concurs with my current understanding, but from the prev. posts in this thread seem to suggest that there isn't a separate dispatch table from the interrupt vector table...so what am I missing here?
That depends on the type of interrupt...if the kernel gets the divide_by_zero interrupt it will get the address of its exception handler and jump to the location where it is located...system call handling is done differently due to the numerous handlers associated with it. Also the linux kernel may implement it differently from the legacy unix kernels like aix solaris hpux.
Quote:
Originally Posted by ab_tall
Btw I was concerned about the system call no. as the total system call count exceeds the no. of interrupts provided by the x86 architecture so I was wondering how we indexed into the vector table (300 odd v/s 255 s/w interrupts)... Please feel free to correct me if I'm wrong.
System call handling is multiplexed due to the numerous ISRs...the read syscall will have a separate ISR from write so that is why after the int 0x80 instruction the kernel gets the base address of the interrupt vector table from the IDT and then uses the system call no to index into the IVT to get the address of the ISR to execute...and if my explanation is confusing the picture you posted is perfect for an explanation and you can totally ignore my blah blah blah Smilie
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

System calls in UNIX

Hi i am very new to programming in UNIX and don't understand the difference between a system call and a normal function call. Also can I implement system calls from within a program? If so could someone please give me an example of a system call from within a program. Lastly, when creating a... (1 Reply)
Discussion started by: bjhum33
1 Replies

2. UNIX for Dummies Questions & Answers

system calls in C

Hello, how would i be able to call ps in C programming? thanks, ---------- Post updated at 01:39 AM ---------- Previous update was at 01:31 AM ---------- here's the complete system call, ps -o pid -p %d, getpit() (2 Replies)
Discussion started by: l flipboi l
2 Replies

3. UNIX for Dummies Questions & Answers

About system calls.

Hi all, I am new here . I want to know about system call in detail. As system calls are also function .How system identifies it.:) (2 Replies)
Discussion started by: vishwasrao
2 Replies

4. BSD

system calls

what is the functions and relationship between fork,exec,wait system calls as i am a beginer just want the fundamentals. (1 Reply)
Discussion started by: sangramdas
1 Replies

5. Programming

System calls

why user is not able to switch from user to kernel mode by writing the function whose code is identical to system call. (1 Reply)
Discussion started by: joshighanshyam
1 Replies

6. UNIX Desktop Questions & Answers

Using system calls

Hi, I'm new to UNIX system calls. Can someone share your knowledge as to how exactly system calls should be executed? Can they be typed like commands such as mkdir on the terminal itself? Also, are there any websites which will show me an example of the output to expect when a system call like... (1 Reply)
Discussion started by: ilavenil
1 Replies

7. Solaris

System calls ?

where can i find the differences in System calls between solaris and aix? also is it possible to find a comprehensive list of them? (1 Reply)
Discussion started by: TECHRAMESH
1 Replies

8. UNIX for Dummies Questions & Answers

System calls?

open, creat, read, write, lseek and close Are they all primitive? :confused: *Another Question: is there a different between a system call, and an i/o system call? (2 Replies)
Discussion started by: PlunderBunny
2 Replies

9. UNIX for Dummies Questions & Answers

System calls for cp and mv

Which system calls are made for operations cp and mv (2 Replies)
Discussion started by: gaurava99
2 Replies

10. UNIX for Dummies Questions & Answers

System Calls

What does the system call "dup" do? What is the difference between dup and dup2 I have a fair idea of what it does but I am confused when its coming down to the exact details... Please help me!:confused: (2 Replies)
Discussion started by: clickonline1
2 Replies
Login or Register to Ask a Question