source: branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/architecture.html@ 218

Last change on this file since 218 was 218, checked in by Herwig Bauernfeind, 17 years ago

Import Samba 3.3 branch at 3.3.0 level docs htmldocs (psmedley's port)

File size: 8.6 KB
RevLine 
[218]1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 3. Samba Architecture</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="pt02.html" title="Part II. Samba Basics"><link rel="next" href="debug.html" title="Chapter 4. The samba DEBUG system"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Samba Architecture</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt02.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="architecture"></a>Chapter 3. Samba Architecture</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Dan</span> <span class="surname">Shearer</span></h3></div></div><div><p class="pubdate"> November 1997</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="architecture.html#id2556708">Introduction</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556751">Multithreading and Samba</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556783">Threading smbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556844">Threading nmbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556889">nbmd Design</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556708"></a>Introduction</h2></div></div></div><p>
2This document gives a general overview of how Samba works
3internally. The Samba Team has tried to come up with a model which is
4the best possible compromise between elegance, portability, security
5and the constraints imposed by the very messy SMB and CIFS
6protocol.
7</p><p>
8It also tries to answer some of the frequently asked questions such as:
9</p><div class="orderedlist"><ol type="1"><li><p>
10 Is Samba secure when running on Unix? The xyz platform?
11 What about the root priveliges issue?
12</p></li><li><p>Pros and cons of multithreading in various parts of Samba</p></li><li><p>Why not have a separate process for name resolution, WINS, and browsing?</p></li></ol></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556751"></a>Multithreading and Samba</h2></div></div></div><p>
13People sometimes tout threads as a uniformly good thing. They are very
14nice in their place but are quite inappropriate for smbd. nmbd is
15another matter, and multi-threading it would be very nice.
16</p><p>
17The short version is that smbd is not multithreaded, and alternative
18servers that take this approach under Unix (such as Syntax, at the
19time of writing) suffer tremendous performance penalties and are less
20robust. nmbd is not threaded either, but this is because it is not
21possible to do it while keeping code consistent and portable across 35
22or more platforms. (This drawback also applies to threading smbd.)
23</p><p>
24The longer versions is that there are very good reasons for not making
25smbd multi-threaded. Multi-threading would actually make Samba much
26slower, less scalable, less portable and much less robust. The fact
27that we use a separate process for each connection is one of Samba's
28biggest advantages.
29</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556783"></a>Threading smbd</h2></div></div></div><p>
30A few problems that would arise from a threaded smbd are:
31</p><div class="orderedlist"><ol type="1"><li><p>
32 It's not only to create threads instead of processes, but you
33 must care about all variables if they have to be thread specific
34 (currently they would be global).
35</p></li><li><p>