ใบงานที่ 7 การจัดการอุปกรณ์ Device Management

ใบงานที่ 7 การจัดการอุปกรณ์ Device Management

จัดทำโดย นายสัญชัย  สุดเอก
รหัส 6031280007

ลักษณะของอุปกรณ์ (Device Characteristic)

1.อุปกรณ์อินพุต-เอ้าต์พุต (Input/Output Device)
2.อุปกรณ์เก็บข้อมูล (Storage Device)


อุปกรณ์อินพุต-เอ้าต์พุต (Input/Output Device)

  อุปกรณ์อินพุต คืออุปกรณ์ที่ทำให้คอมพิวเตอร์สามารถสัมผัสและรับรู้สิ่งต่าง ๆ จากโลกภายนอกได้ เช่น เครื่องอ่านบัตร คีย์บอร์ด เมาส์

   อุปกรณ์เอ้าต์พุต คือ อุปกรณ์ที่ทำให้คอมพิวเตอร์ ควบคุมหรือส่งผลออกมาสู่โลกภายนอกได้ เช่น จอภาพ เครื่องพิมพ์ 

 แบ่งได้เป็น 2 ประเภทคือ
1.อุปกรณ์ชนิดข้อมูลเป็นสาย (Stream)
2.อุปกรณ์ชนิดข้อมูลไม่เป็นสาย (Non-Stream

อุปกรณ์ชนิดข้อมูลเป็นสาย (Stream)1.ข้อมูลที่ส่งเข้าออกจะเรียงมาเป็นลำดับก่อนหลัง
2.การแบ่งแยกข้อมูลทำได้โดยตรวจสอบลำดับของข้อมูล
3.สามารถจัดการได้ง่าย
4.อุปกรณ์เหล่านี้ได้แก่ คีย์บอร์ด เครื่องพิมพ์


อุปกรณ์ชนิดข้อมูลไม่เป็นสาย (Non-Stream)

1.ข้อมูลที่ส่งและรับไม่ขึ้นอยู่กับลำดับการส่ง
2.ต้องอาศัยข้อมูลเพิ่มเติมเพื่อที่จะแยกแยะข้อมูลแต่ละตัวและมีวิธีจัดการโดยเฉพาะ
3.อุปกรณ์ชนิดนี้ได้แก่ จอภาพ


อุปกรณ์เก็บข้อมูล (Storage Device) เป็นอุปกรณ์เก็บข้อมูลที่คอมพิวเตอร์ใช้เก็บข้อมูลต่าง ๆ ข้อมูลสามารถถูกดึงหรือเรียกกลับมาใช้ได้ในภายหลัง แบ่งเป็น 2 ประเภทคือ
1.อุปกรณ์ที่มีการเข้าถึงแบบลำดับ (Serial Access Storage Device)
2.อุปกรณ์ที่มีการเข้าถึงโดยตรง (Direct Access Storage Device)

อุปกรณ์ที่มีการเข้าถึงแบบลำดับ (Serial Access Storage Device)

   การเข้าถึง (Access) ต้องเป็นไปตามลำดับ เรียงไปจนถึงตำแหน่งที่ต้องการ •การเก็บข้อมูลจะเก็บเป็นกลุ่ม ๆ ไม่มีแอดเดรสของแต่ละกลุ่ม การอ่านต้องอ่านเข้ามาทีละกลุ่มแล้วตรวจสอบว่าเป็นกลุ่มที่ต้องการหรือไม่จนพบข้อมูล  อุปกรณ์พวกนี้ได้แก่ เทป

อุปกรณ์ที่มีการเข้าถึงโดยตรง (Direct Access Storage Device)

    ข้อมูลจะถูกจัดไว้เป็นกลุ่มในระดับบล็อกหรือ เซกเตอร์ แต่ละกลุ่มจะมีแอสเดรสของตัวเอง
-การเข้าถึงทำได้โดยกำหนดแอดเดรสของข้อมูลกลุ่มนั้นทำให้การเข้าถึงสามารถเข้าถึงได้โดยตรงไม่ต้องผ่านข้อมูลกลุ่มอื่น  อุปกรณ์พวกนี้ได้แก่ ดิสก์





ตัวควบคุมอุปกรณ์ (Device Controller)
      อุปกรณ์แต่ละประเภทจะประกอบด้วยกลไกต่าง ๆ และส่วนที่เป็นวงจรอิเล็กทรอนิกส์  สำหรับส่วนที่เป็นวงจรอิเล็กทรอนิกส์เราเรียกว่าชิพ ที่ประกอบรวมกันอยู่บนเซอร์กิตบอร์ด (Circuit board) ซึ่งส่วนนี้เองที่ถูกเรียกว่า ตัวควบคุมอุปกรณ์
-ตัวควบคุมอุปกรณ์ทำหน้าที่ควบคุมการทำงานของอุปกรณ์ ตรวจสอบและแก้ไขข้อผิดพลาดเมื่อเกิดขึ้น
ในแต่ละอุปกรณ์ก็จะมีตัวควบคุมอุปกรณ์นั้น ๆ เช่น
–ตัวควบคุมจอภาพ หรือรู้จักกันในนามของการ์ดจอภาพ
–ตัวควบคุมดิสก์ หรือรู้จักกันในนามของดิสก์คอนโทรเลอร์ (Disk Controller)

ตัวขับอุปกรณ์ (Device drivers)
     อุปกรณ์แต่ละชนิดย่อมมีลักษณะที่แตกต่างกันออกไปในหลาย ๆ อย่าง ทั้งการติดต่อรับส่งข้อมูล การควบคุมการทำงานภายในอุปกรณ์   ถ้าเราให้ OS เป็นผู้ควบคุมทุกอุปกรณ์ ตัว OS จะต้องรู้การทำงานของอุปกรณ์แต่ละชนิดอย่างละเอียด รวมทั้งกรณีที่มีการพัฒนาอุปกรณ์ใหม่ ๆ ขึ้นมาก็จะต้องมีการแก้ไขให้ OS รู้จักอุปกรณ์ตัวใหม่อยู่ตลอดเวลา
    ด้วยความไม่สะดวกดังกล่าวผู้ออกแบบ OS จึงได้ทำการแยกเอาส่วนควบคุมอุปกรณ์ทั้งหมดออกจากระบบ โปรแกรมที่แยกตัวออกมานั้นมีหน้าที่ควบคุมการ ติดต่อกับอุปกรณ์เหล่านั้นเราเรียกว่า ตัวขับอุปกรณ์ (Device drivers)

หน้าที่ของ OS ในการจัดการอุปกรณ์    ติดตามสถานะของอุปกรณ์ทุกชิ้น โดยจะมี UCB (Unit control block) สำหรับอุปกรณ์แต่ละชิ้นเพื่อเก็บข้อมูลที่สำคัญต่าง ๆ ของอุปกรณ์นั้น ๆ กำหนดการให้ใช้งานเมื่อมีการร้องขออุปกรณ์โดยมีเทคนิคอยู่ 3 ประการ

1.การยกให้ (Dedicated device) เป็นการกำหนดให้อุปกรณ์ถูกใช้ได้โดยโปรเซสเพียงโปรเซสเดียว 
โปรเซสอื่น ๆ จะเข้ามาใช้อุปกรณ์ตัวนี้ไม่ได้
2.การแบ่งปัน (Shared device) เป็นการกำหนดให้อุปกรณ์ถูกใช้ได้โดยหลายโปรเซสร่วมกัน ไม่เป็นของโปรเซสใดโปรเซสหนึ่ง
3.การปลอม (Virtual device) เป็นการจำลองอุปกรณ์ชิ้นหนึ่งให้เป็นอุปกรณ์อีกชิ้นหนึ่ง

•จัดสรร (Allocate) อุปกรณ์ เพื่อมอบหมายอุปกรณ์ชิ้นนั้นให้โปรเซสที่ร้องขอ
•เรียกคืน (Deallocate) อุปกรณ์เมื่อโปรเซสที่ครอบครองอุปกรณ์ทำงานจบลง หรือต้องการคืนอุปกรณ์ให้กับระบบ
•ควบคุมและขัดจังหวะการรับส่งข้อมูลระหว่างอุปกรณ์กับซีพียู หรือหน่วยความจำ


การรับส่งข้อมูลระหว่าง CPU กับอุปกรณ์


-เมื่อโปรเซสต้องการส่งข้อมูลให้กับอุปกรณ์ต่าง ๆ ข้อมูลที่จะส่งจะถูกเก็บไว้ในหน่วยความจำ
-การส่งจะกระทำโดย CPU เป็นผู้ดึงข้อมูลมาจากหน่วยความจำและส่งไปให้อุปกรณ์ต่าง ๆ
-ในทางกลับกันเมื่ออุปกรณ์ต่าง ๆ ต้องการส่งข้อมูลให้โปรเซส ข้อมูลจะถูกส่งผ่าน CPU ไปไว้ในหน่วยความจำ จากนั้นโปรเซสจึงนำข้อมูลไปใช้ได้
วิธีการรับส่งข้อมูล มีอยู่ 3 วิธี ได้แก่ 
1.การพอลลิ่ง (Polling)
2.การอินเตอร์รัพต์ (Interrupt)
3.เมลบ็อกซ์ (Mailbox)


การพอลลิ่ง (Polling)      ลักษณะการติดต่อแบบนี้คือ ทุก ๆ ช่วงเวลาหนึ่งซีพียูจะหยุดงานที่ทำอยู่ชั่วคราวและไปตรวจเช็คที่แต่ละแชนเนลเพื่อดูว่ามีอุปกรณ์ใดต้องการส่งข้อมูลบ้างตั้งแต่ตัวแรก-ตัวสุดท้าย จนกระทั้งหมดซีพีจะกลับไปทำงานตามเดิม

การอินเตอร์รัพต์ (Interrupt)
      เมื่ออุปกรณ์ตัวใดต้องการส่งข้อมูล จะส่งสัญญาณผ่านทางแชนแนลไปบอกซีพียู เมื่อซีพียูทราบก็จะหยุดงานชั่วคราวแล้วไปรับรับส่งข้อมูลจนเสร็จสิ้น แล้วกลับไปทำงานต่อ

เมลบ็อกซ์ (Mailbox)      ระบบจะเสียเนื้อที่ส่วนหนึ่งไปเพื่อเป็นที่พักของข้อมูลเมื่อมีอุปกรณ์บางตัวต้องการส่งข้อมูล ก็จะส่งไปเก็บไว้ในเนื้อที่ส่วนนี้ เมื่อถึงระยะเวลาหนึ่งซีพียูจะหยุดงานที่ตัวเองทำไปรับส่งข้อมูลเสร็จแล้วก็จะไปทำงานที่ค้างไว้ต่อ

การรับส่งข้อมูลแบบนี้เป็นไปได้ช้าและเปลืองเวลาของ CPU

  -ดังนั้นถ้าสามารถส่งข้อมูลได้โดยไม่ต้องผ่าน CPU ก็จะทำให้การรับส่งข้อมูลเร็วขึ้น และยังสามารถใช้ CPU สำหรับรันโปรเซสอื่นได้ต่อไป
  -วิธีการนี้เรียกว่า การทำ DMA (Direct Memory Access)
-การรับส่งข้อมูลแบบ DMA จำเป็นต้องใช้ ตัวควบคุม DMA (DMA Controller)
-DMA Controller จะทำหน้าที่แทน CPU เมื่อต้องการรับส่งข้อมูลแบบ DMA
-เมื่อต้องการส่งข้อมูล DMA Controller จะส่งสัญญาณไปบอกให้ CPU รับรู้
-เมื่อ CPU ได้รับคำขอ CPU จะสั่งให้ DMA Controller ทำงานควบคุมการรับส่งข้อมูลต่อไป ส่วน CPU จะไปทำงานอื่น
-เมื่อทำงานเสร็จ DMA Controller จะส่งสัญญาณไปบอกให้ CPU รับรู้ว่าการรับส่งข้อมูลเสร็จสิ้นแล้ว


การจัดการสื่อจัดเก็บข้อมูล (Storage Management)

•สื่อจัดเก็บข้อมูลในที่นี้หมายถึงหน่วยความจำสำรอง (Secondary Storage) ที่ใช้ในการจัดเก็บข้อมูล 
•ได้แก่ ดิสก์แม่เหล็ก (Magnetic disk) เช่น ฮาร์ดดิสก์ ฟล็อปปี้ดิสก์




ดิสก์ (Disk)

•การจัดเนื้อที่บนดิสก์แม่เหล็กจะมีการจัดแบ่งออกเป็น ไซลินเดอร์ (cylinder)
•ในแต่ละไซลินเดอร์จะแบ่งออกเป็นแทร็ก (track)
•ในแต่ละแทร็กจะแบ่งออกเป็นเซ็กเตอร์ (sector)




           การจัดเก็บข้อมูลลงในดิสก์นั้นจะเก็บในรูปแบบของบล็อก (Block) ขนาดของบล็อกปกติจะมีขนาด 512 Byte แต่ละบล็อกจะอยู่เรียงตามลำดับในแต่ละเซกเตอร์ โดยเซ็กเตอร์ 0 จะเป็นเซ็กเตอร์แรกของแทร็กแรกซึ่งอยู่ที่ไซลินเดอร์ด้านนอกสุดของดิสก์
          การเรียงลำดับหมายเลขแทร็กและหมายเลขไซลินเดอร์จะเรียงต่อกันไปเรื่อย ๆ จากด้านนอกสุดไปด้านในสุดของดิสก์







การจัดเวลาการใช้ดิสก์ (Disk scheduling)      การใช้งานดิสก์ให้มีประสิทธิภาพนั้นสามารถพิจารณาได้จากระยะเวลาที่ใช้ในการอ่านหรือบันทึกข้อมูล ซึ่งเวลาที่ใช้นั้นขึ้นอยู่กับปัจจัย 3 อย่าง ดังนี้
1.ระยะเวลาการค้นหา (seek time) หมายถึงระยะเวลาที่ใช้ในการเคลื่อนที่หัวอ่านไปยังไซลินเดอร์ที่มีเซ็กเตอร์ที่ต้องการ
2.ระยะเวลาที่ใช้หมุนดิสก์ (rotational latency) หมายถึงที่ระยะเวลาที่รอคอยการหมุนดิสก์เพื่อหาเซ็กเตอร์ที่ต้องการให้ตรงกับหัวอ่าน
3. ระยะเวลาการโอนย้ายข้อมูล (transfer time)

      ระยะเวลาการค้นหาเป็นปัจจัยที่สำคัญมากที่สุด ดังนั้นการลดระยะเวลาการค้นหาลงจะทำให้การใช้งานดิสก์มีประสิทธิภาพมากขึ้น
      เวลาในการเข้าถึงข้อมูล = เวลาค้นหา+เวลาหมุนดิสก์+เวลาถ่ายเทข้อมูล

การจัดเวลาในการใช้ดิสก์นั้นแบ่งออกเป็น 5 แบบดังนี้ 
1.การจัดเวลาแบบมาก่อนได้ก่อน (First come first served : FCFS)
2.การจัดเวลาแบบเวลาสั้นสุดได้ก่อน (Shortest seek time first : SSTF)
3.การจัดเวลาแบบสแกน (SCAN Scheduling)
4.การจัดเวลาแบบซีสแกน (Circular-SCAN Scheduling)
5.การจัดเวลาแบบ LOOK (Look Scheduling) 


การจัดเวลาแบบมาก่อนได้ก่อน  First come first served : FCFS

      เป็นรูปแบบการจัดเวลาที่ง่ายที่สุด แต่ไม่ใช่วิธีของการทำงานที่เร็วที่สุด  เช่นถ้าลำดับการอ่านข้อมูลจากไซลินเดอร์เป็นดังนี้ 97 , 180 , 36 , 124 , 12 , 128 , 62 , 66 ปัจจุบันไซลินเดอร์ 50
ลักษณะการเคลื่อนที่ของหัวอ่านจะเคลื่อนที่ดังรูป


             ลำดับการอ่านข้อมูลจากไซลินเดอร์เป็นดังนี้ 97 , 180 , 36 , 124 , 12 , 128 , 62 , 66
 -หัวอ่านจะต้องเคลื่อนที่ทั้งหมด 660 ไซเลนเดอร์

การจัดเวลาแบบเวลาสั้นสุดได้ก่อน Shortest seek time first : SSTF
      รูปแบบการทำงานจะเป็น    ลักษณะของการที่หัวอ่านจะเคลื่อนที่ไปยังไซลินเดอร์ที่ใกล้ที่สุดก่อนแล้วจึงเคลื่อนไปยังไซลินเดอร์ที่ไกลออกไป เช่นถ้าลำดับการอ่านข้อมูลจากไซลินเดอร์เป็นดังนี้ 97 , 180 , 36 , 124 , 12 , 128 , 62 , 66 จากลำดับที่ให้มาถ้าเริ่มต้นหัวอ่านอยู่ที่ไซลินเดอร์ที่ 50 
ตัวอย่าง : จงเรียงลำดับการเคลื่อนที่ของหัวอ่านพร้อมทั้งวาดรูปประกอบ




       ลำดับการอ่านข้อมูลจากไซลินเดอร์เป็นดังนี้ 97 , 180 , 36 , 124 , 12 , 128 , 62 , 66
-วิธีการเคลื่อนที่แบบ FCFS 50, 62, 66, 36, 12, 97, 124, 128, 180
-หัวอ่านจะต้องเคลื่อนที่ทั้งหมด 238 ไซเลนเดอร์


ข้อเสียแบบ SSTF      การคอยใช้บริการที่อาจจะไม่ได้รับการบริการ เช่น มีการเรียกใช้ไซเลนเดอร์ 12 และ 180 ในขณะที่หัวอ่านอยู่ที่ ไซเลนเดอร์ 12 นั้นมีการเรียกใช้ ไซเลนเดอร์ที่อยู่ใกล้ 12 เข้ามา ซึ่งการขอเรียกใช้ไซเลนเดอร์ที่ใกล้ 12 ก่อน ซึ่ง ไซเลนเดอร์ 180 ต้องคอยก่อน
      การจัดแบบ SSTF ยังไม่ใช่วิธีการดีที่สุด สามารถปรับวิธีการลดการเคลื่อนที่หัวอ่านให้น้อยลงได้อีก ดังตัวอย่าง





     ลำดับการอ่านข้อมูลจากไซลินเดอร์เป็นดังนี้ 97 , 180 , 36 , 124 , 12 , 128 , 62 , 66
-วิธีการเคลื่อนที่แบบ FCFS 50, 36, 12, 62, 66, 97, 124, 128, 180
-หัวอ่านจะต้องเคลื่อนที่ทั้งหมด 206 ไซเลนเดอร์


การจัดเวลาแบบเวลา SCAN       รูปแบบการทำงานจะเป็นลักษณะของการที่หัวอ่านจะเริ่มอ่านที่ด้านใดด้านหนึ่งของดิสก์ (ต้องทราบทิศทาง) จะเคลื่อนที่ไปยังอีกด้านหนึ่ง และจะให้บริการก็ต่อเมื่อหัวอ่านเคลื่อนที่ไปถึงที่ไซลินเดอร์นั้น

-เช่นถ้าลำดับการอ่านข้อมูลจากไซลินเดอร์เป็นดังนี้ 97 , 180 , 36 , 124 , 12 , 128 , 62 , 66 จากลำดับที่ให้มาถ้าเริ่มต้นหัวอ่านอยู่ที่ไซลินเดอร์ที่ 50 ถ้าหัวอ่านเคลื่อนที่ต่อไปยังไซลินเตอร์ 0
การจัดเวลาแบบเวลา C-SCAN     รูปแบบการทำงานจะเป็นลักษณะเหมือน SCAN ต่างกันตรงที่เมื่อหัวอ่านเคลื่อนที่ถึงอีกด้านหนึ่งของดิสก์เมื่อไหร่ หัวอ่านจะเคลื่อนย้ายกลับไปอีกด้านหนึ่งของดิสก์ทันทีโดยไม่มีการให้บริการในระหว่างเคลื่อนย้าย (ไปจนสุด-กลับจนสุด)

-เช่นถ้าลำดับการอ่านข้อมูลจากไซลินเดอร์เป็นดังนี้ 97 , 180 , 36 , 124 , 12 , 128 , 62 , 66 จากลำดับที่ให้มาถ้าเริ่มต้นหัวอ่านอยู่ที่ไซลินเดอร์ที่ 50


การจัดการเนื้อที่บนดิสก์ (Disk Management)
        OS ยังมีหน้าที่ที่เกี่ยวข้องกับการจัดการเนื้อที่บนดิสก์ เช่น การฟอร์แมตดิสก์ การกู้คืนดิสก์ส่วนที่เสียหาย นอกเหนือจากการจัดเวลาการใช้ดิสก์
-การฟอร์แมตดิสก์ (Disk formatting) –การฟอร์แมตดิสก์เป็นขบวนการจัดแบ่งเนื้อที่บนดิสก์โดยใช้ซอฟต์แวร์เป็นตัวจัด กระบวนการนี้มีชื่อเรียกเป็นทางการว่า Low-Level formatting
–การฟอร์แมตดิสก์จะทำให้ดิสก์แบ่งออกเป็นแทร็กและเซ็กเตอร์




การฟอร์แมตดิสก์ (Disk formatting) ในไดรว์ A


Boot Block

          เมื่อเปิดเครื่องคอมพิวเตอร์จำเป็นที่จะต้องมีโปรแกรมเริ่มต้น ซึ่งจะทำหน้าที่ตรวจสอบและอ่านค่าที่จำเป็นทั้งหมดในระบบว่าระบบคอมพิวเตอร์พร้อมทำงานหรือไม่
          โปรแกรมนี้มีชื่อว่า Bootstrap ซึ่งจะถูกเก็บไว้ในดิสก์ในพาร์ติชั่นที่เรียกว่า Boot block ซึ่งดิสก์ที่มี Boot Block เก็บอยู่จะเรียกว่า Boot Disk


Bad Block      เซกเตอร์เสีย หมายถึง ข้อมูลที่อ่านมาจากเซ็กเตอร์นั้นมีค่าไม่ตรงกับค่าที่ได้มีการบันทึกลงไป
bad block เป็นข้อบกพร่องจากโรงงาน จะมีวิธีจัดการคือ คอนโทรลเลอร์ทำหน้าที่จัดการกับพื้นที่ที่เสีย
โปรแกรมระบบทำหน้าที่จัดการกับพื้นที่ที่เสีย

การจัดการเกี่ยวกับ Bad Blocks 

       เนื่องจากดิสก์มีชิ้นส่วนที่เคลื่อนไหวและมีความคงทนต่อการใช้งานไม่มากนัก ซึ่งจะทำให้มีโอกาสที่ดิสก์จะเกิดความเสียหายได้จากการเคลื่อนที่ของหัวอ่าน ซึ่งบางครั้งอาจจะเสียหายทั้งหมด หรือเสียหายเป็นบางเซ็กเตอร์ (Bad sector)

-วิธีการจัดการกับดิสก์ที่มี Bad Blocks หรือ Bad sector ตัว OS จะทำการทดสอบดิสก์และจะบันทึกรายการของ Bad sector ลงบนดิสก์ และแต่ละ Bad sector จะมีเซ็กเตอร์ที่ใช้สำรองสำหรับ Bad sector นั้น

–วิธีการจัดการในปัจจุบัน OS ทำอยู่ 2 วิธี
1.ใช้เซ็กเตอร์สำรองที่มีแทน Bad sector ที่เสีย
2.ขยับข้าม Bad sector ซึ่งวิธีนี้จะต้องมีการก็อปปี้ข้อมูลทั้งหมดและบันทึกลงไปใหม่ 



    อุปกรณ์เสมือน  คือการนำเอาอุปกรณ์ชนิดหนึ่งมาจำลองการทำงานเป็นอุปกรณ์อีกชนิดหนึ่ง เพื่อให้เกิดความคล่องตัวในการทำงานของระบบ

  ตัวอย่างของการทำอุปกรณ์เสมือนคือการทำแรมดิสก์ (RAM Disk) อีกวิธีที่นิยมคือการทำสพูล SPOOL (Simultaneous Peripheral Operation On-Line
การทำสพูล SPOOL

           เป็นการใช้อุปกรณ์ที่มีความเร็วสูงมาทำงานแทนอุปกรณ์ที่มีความเร็วต่ำ  เช่นการใช้ดิสก์แทนเครื่องพิมพ์ เนื่องจากดิสก์มีการรับส่งข้อมูลได้รวดเร็วกว่าเครื่องพิมพ์มากหลายเท่า   โดยมีโปรเซสหนึ่งของ OS ชื่อ SPOOLER ทำหน้าที่จัดการเรื่องการทำ SPOOL ของระบบ





ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

พาวเวอร์ซัพพลาย(Power Supply)

เครื่องปริ้นแบบต่างๆ

ใบงานที่4 การจัดเวลาซีพียู (CPU Scheduling)