งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Shared Library Pallapa Sripairojkul Id. 4322043. Topics Overview Binding time Shared library in practice Address space management Structure of shared.


งานนำเสนอเรื่อง: "Shared Library Pallapa Sripairojkul Id. 4322043. Topics Overview Binding time Shared library in practice Address space management Structure of shared."— ใบสำเนางานนำเสนอ:

1 Shared Library Pallapa Sripairojkul Id. 4322043

2 Topics Overview Binding time Shared library in practice Address space management Structure of shared library Creating shared library Linking with shared library Running with shared library The malloc hack and other shared library problems

3 รูปแสดงการ ประมวลผล โปรแกรม Sour ce prog ram Dynami cally Loaded system library Syst em libra ry Load mod ule Other objec t modu les Obje ct mod ule Compiler or assemble r Linka ge editor load er In- memory binary memory image Com pile time loa d tim e Executio n time (run time)Overview

4 Overview  Shared library consists of executable code that can be located at any available address in memory  Only one copy of shared library’s instructions is loaded  The system shares that one copy among multiple programs instead of loading a copy for each program using the library, as in the case with archive (static) library

5 Overview Advantages  Program linked with shared libraries don ’ t need to be recompiled and relinked when changes are made to those libraries.  The use of shared libraries occupies less space in memory and on disk. When multiple programs are linked to a single shared library, the amount of physical memory used by each process can be significantly reduced.

6 Shared library vs Archive library Shared libraryArchive library - ld - ar - can be positioned at any - fixed location in process’s available position. Loader private virtual address space assigns a location in private virtual address space - is in /usr/shlib - is in /usr/lib - naming prefix “lib” and - prefix “lib” end with suffix end with suffix “.so” “.a”

7 Example Main() {... printf( “How do you like this manual?\n” );... result = strcmp ( “I do.”, answer );... }

8 a.out file ที่สร้างขึ้นโดยใช้ archive library และ shared library FILE HEADER Program.text library.text for printf(3S) and strcmp(3C) Program.data library.data for printf(3S) and strcmp(3C) SYMBOL TABLE STRING TABLE FILE HEADER Program.text Program.data.lib SYMBOL TABLE STRING TABLE สร้างโดย link editor อ้างถึง library code สำหรับ printf(3S) และ strcmp(3C) ถูกคัดลอกไป ยังไฟล์โดย link editor

9 Processes using an Archive and a Shared Library Addre ss Space Library code ที่ อ้างถึง โดย.lib Archi ve Versi on อาจจะมี การ นำไปใช้ใน โปรเซสอื่น พร้อม ๆ กัน Library Shar ed Versi on นำเข้าสู่ตำแหน่ง ของหน่วยความจำ ของโปรเซส

10 Binding time Shared library ไม่ถูกนำไปไว้กับ linked program ปัญหาที่อาจเกิดขึ้น – ไม่พบ shared library ที่ต้องการ จึงมีข้อความ แสดงข้อผิดพลาดและจบการทำงาน – มี shared library นั้นอยู่ แต่ library มีการ เปลี่ยนแปลงเมื่อโปรแกรมผ่านการ link ไปแล้ว การเปลี่ยนแปลงที่จะไม่มีผลกระทบต่อโปรแกรมคือ การเปลี่ยนแปลงที่ไม่ไปเปลี่ยนตำแหน่งของ library ที่โปรแกรมเรียกใช้

11 Shared library in practice All three work nearly the same but the differences are instruction. – SVR3.2  COFF format – LINUX  a.out format – BSD/OS  a.out and ELF format SVR3.2 ต้องการการเปลี่ยนแปลงใน linker เพื่อให้สนับสนุนการ ค้นหา shared library ขยายความสามารถของ OS ให้สนับสนุน การทำงานในเรื่องของ runtime startup LINUX ต้องการการปรับ linker เล็กน้อย และเพิ่ม system call เพื่อช่วยเหลือในการทำ library mapping BSD/OS ไม่มีการเปลี่ยนแปลงใด ๆ กับ linker หรือ OS แต่จะใช้ shell script เพื่อให้ argument ที่จำเป็นแก่ linker และ standard C library startup routine เพื่อ map กับ library

12 Address space management แต่ละ shared library จับจองส่วนของ address space ของโปรแกรมที่มีการเรียกใช้มันในขนาด ที่คงที่ Library ที่ต่างกันต้องใช้ non-overlapping addresses ถ้ามันมีการใช้ในโปรแกรมเดียวกัน ใช้การปล่อยให้มีที่ว่างระหว่าง library แต่ละตัว เมื่อมันมีการ เปลี่ยนแปลงจนได้เวอร์ชันใหม่มา

13 Structure of shared library File header, a.out,COFF, or ELF header (Initialization routine, not always present) Jump Table Code Global data Private data Shared library คือ an executable format file ที่มี library code และ data บรรจุอยู่ข้าง ใน Shared library เริ่มด้วย bootstrap routine เล็ก ๆ ในการ map ส่วนที่เหลือของ library ตามด้วย jump table ซึ่งเก็บ exported address ของแต่ละ public routine ใน library Text section Exported data และ Private data

14 การสร้าง a.out ผู้ใช้สั่งให้ link editor ค้นหา shared library ด้วยวิธีเดียวกับ การสั่งให้ค้นหา archive library คือ $cc file.c –o file … -l library_file … และการลิงค์ทุก ๆ ไฟล์ในไดเรกทอรี ปัจจุบันเข้าด้วยกัน กับ shared C library ผู้ใช้จะต้องใช้คำสั่ง ต่อไปนี้ $cc *.c –lc_s

15 Creating shared library ขั้นตอนพื้นฐาน – กำหนดว่าที่ address ใดที่ library code และ data จะถูก load ลงไป – ดู input library ให้ทั่วตลอดไลบรารี เพื่อดู exported code symbols ทั้งหมด – สร้าง jump table ที่มีสมาชิกคือ exported code symbol. - ถ้ามีการกำหนดค่าเริ่มต้น หรือ loader routine ที่ตอนเริ่มต้น ของ library ให้ทำการคอมไพล์ หรือ แอสเซมเบิล - สร้าง shared library : รัน linker และ link ทุก ๆ สิ่งเข้า ด้วยกันเป็น executable format file ขนาดใหญ่ - สร้าง stub library : ดึงเอา symbols ที่จำเป็นจาก stub routine ที่สร้างขึ้นมาใหม่สำหรับแต่ละ library routine ออก แล้วทำการคอมไพล์ stubs routine และรวมเข้าเป็น stub library.

16 Creating shared library More details in : – Creating the jump table – Creating the shared library – Creating the stub library – Version naming

17 Creating jump table

18 Creating the shared library

19 Creating the stub library

20 Version naming

21 Linking with shared library

22 Running with shared library

23 Shared library problems

24 Example /* file shrobj.c */ const char *myfunc() { return “hello world”; }

25 Example (cont.) /* file hello.c */ #include extern const char *myfunc() main() { printf(“%s\n”,myfunc()); return 0; }

26 Example (cont.) $ setenv LD_LIBRARY_PATH /stud/43/g4322043/… $ cc –fpic –c $ cc –shared –o libshared.so shrobj.o $ cc hello.c libshared.so $./a.out

27 Summary  Using any shared library almost always saves disk storage space, memory, and computer power  Running Unix system on smaller machines makes the efficient use of these resources increasingly important.  Therefore, you should normally use a shared library whenever it’s available

28 References -UNIX System V Programmer’s guide. AT&T Prentice-Hall. Eaglewood Cliffs. NJ. -Silberschatz, Abraham. Applied operating system concepts. John Wiley&Sons,Inc. 2000. -Linker and Libraries Guide Solaris 2.5. Sun Microsystem, Inc. -http://www.tru64unix.compaq.com/faqs/publications/base_doc/ DOCUMENTATION/HTML/AA-PS30D-TET1_thml/peg5.html #shlib_chap. -http://www.iecc.com/linker/linker09.html. -http://www.users.cs.umn.edu/~bailey/sharedobjects/ sharedobjects.html. -http://www.erlenstar.demon.co.uk/unix/faq_7.html -http://www.xidak.com/mainsail/v19docs/newhtml/ osu-UNIXU-D.html

ดาวน์โหลด ppt Shared Library Pallapa Sripairojkul Id. 4322043. Topics Overview Binding time Shared library in practice Address space management Structure of shared.


Ads by Google